.Net MVC中訪問PC網頁時,自動切換到移動端對應頁面

       隨着移動端的流行,愈來愈的網站,除了提供PC網頁以外,也提供了移動端的H5頁面,手機在訪問www.xxx.com的時候,能自動跳轉到mobile.xxx.com。網上不少在實現時也能使用JS直接進行跳轉,除了JS以外,你還能夠使用MVC的後端代碼直接實現後端

 

1、核心代碼

HttpContext.Current.Request.Browser.IsMobileDevice

 

2、如何使用 ?

  方法一:

     在首頁訪問Controller代碼最前面直接增長核心代碼進行判斷ide

public ActionResult Index()
        {
            if (IsMobile())
            {
                return Redirect("mobile.xxx.com");
            }
            return View();
        }
       
        public static bool IsMobile()
        {
            if (System.Web.HttpContext.Current.Request.Browser.IsMobileDevice)
                return true;

            return false;
        }

  方法二

      繼承AuthorizeAttribute,增長自定義Attribute網站

public class RedirectMobileDevicesToMobileAreaAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
        {
            RouteData rData = httpContext.Request.RequestContext.RouteData;
            //判斷,若是是頁面手工點擊的【電腦版】,則不進行跳轉
            string customChange = (rData.Values["id"] ?? "").ToString();
            if (!string.IsNullOrWhiteSpace(customChange))
            {
                return true;

            }
            if (!httpContext.Session.IsNewSession)
                return true;

            if (!httpContext.Request.Browser.IsMobileDevice)
                return true;

            if (Regex.IsMatch(httpContext.Request.Url.PathAndQuery, "/Mobile($|/)"))
                return true;
            return false;
        }

        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            var redirectionRouteValues = GetRedirectionRouteValues(filterContext.RequestContext);
            filterContext.Result = new RedirectToRouteResult(redirectionRouteValues);
        }
        
        protected virtual RouteValueDictionary GetRedirectionRouteValues(RequestContext requestContext)
        {
            return new RouteValueDictionary(new { area = "Mobile", controller = requestContext.RouteData.Values["controller"], action = requestContext.RouteData.Values["action"] });
        }
    }

在須要跳轉的地方增長spa

[RedirectMobileDevicesToMobileArea]
[RedirectMobileDevicesToMobileArea]
public ActionResult Index()
        {
            //if (IsMobile())
            //{
            //    return Redirect("mobile.xxx.com");
            //}
            return View();
        }

 

附源代下載:點擊訪問

相關文章
相關標籤/搜索