第一种方法
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后缀