MVC判断不同设备 controller跳转不同页面

第一种方法

1.添加方法

  public static bool ChangeEquipment()
        {
            bool result = false;
            string agent = HttpContext.Current.Request.UserAgent;
            string[] keywords = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "UCBrowser" };
            //排除 Windows 桌面系统 ,主要标志字符串为Windows NT
            if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
            {
                //排除 苹果桌面系统 ,主要标志字符串为Macintosh
                if (!agent.Contains("Windows NT") && !agent.Contains("Macintosh"))
                {
                    foreach (string item in keywords)
                    {
                        if (agent.Contains(item))  //符合Android", "iPhone", "iPod", "iPad", "Windows Phone", "UCBrowser"的,返回true
                        {
                            result = true;
                            break;
                        }
                    }
                }
            }
            return result;
        }

2.在controller中引用方法

if(ChangeEquipment())

{

return View("MobileView") //移动端跳转的页面

}

else{

return View() //pc跳转页面

}

 

第二种方法

  在Global.asax.cs中Application_Start方法添加代码

    DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Mobile")
      {
          ContextCondition = context =>
          context.GetOverriddenBrowser().IsMobileDevice
          && (context.Request.UserAgent.IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0
          || context.Request.UserAgent.IndexOf("Android", StringComparison.OrdinalIgnoreCase) >= 0
          || !context.Request.Browser.IsMobileDevice)
      });

其中移动端跳转的页面必须是 View.Mobile.cshtml 这种形式

MVC判断不同设备 controller跳转不同页面_第1张图片

MVC判断不同设备 controller跳转不同页面_第2张图片

 "Android", "iPhone", "iPod", "iPad", "Windows Phone", "UCBrowser" ,"Windows NT","compatible; MSIE 9.0;" 为标志字符串 可以根据具体情况添加不同的跳转

 

第一种方法可以跳转不同的view页面 view页面的命名可以不统一 自由命名 第二种方式必须含有Mobile后缀

 

 

你可能感兴趣的:(MVC)