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 这种形式

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值