我有一个 MVC4 应用程序,我使用 51Degrees (Lite) 来检测设备并相应地选择移动 ( .mobile.cshtml) 或桌面 ( .cshtml) 视图。51Degrees 可以很好地完成这项工作。但是,如果我想使用HttpContext.SetOverriddenBrowser(BrowserOverride.Desktop)从移动视图切换到桌面视图(在移动设备上) ,它不起作用。仅供参考,它可以在没有 51Degrees 的情况下工作。
下面是选择显示模式的代码(Global.asax.cs 中的 Application_Start()):
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("mobile")
{ContextCondition = Context =>Context.Request.Browser["IsMobile"] == "True"
});
这是视图切换器控制器操作代码:
public class ViewSwitcherController : Controller
{
public RedirectResult SwitchView(bool mobile, string ReturnUrl="/Login/Login")
{
// If the mobile user has requested to view the mobile view
// remove any overridden user agent for the current request
if (Request.Browser.IsMobileDevice == mobile)
HttpContext.ClearOverriddenBrowser();
else
// Otherwise override the browser setting to desktop mode
HttpContext.SetOverriddenBrowser(mobile ? BrowserOverride.Mobile : BrowserOverride.Desktop);
return Redirect(ReturnUrl);
}
}
这是视图中切换到桌面视图的代码:
@Html.ActionLink("Desktop view", "SwitchView", "ViewSwitcher", new { mobile = false, ReturnUrl = Request.Url.PathAndQuery }, new { rel = "external" })
如果我遗漏了什么,请告诉我。
提前致谢。