我有我曾經51Degrees(精簡版),檢測設備,並相應地選擇移動(.mobile.cshtml)或桌面( .cshtml)視圖MVC4應用程序。 51Degrees可以正確地完成這項工作。但是,如果我想使用HttpContext.SetOverriddenBrowser(BrowserOverride.Desktop)從手機切換到桌面視圖(在移動設備上),它不起作用。僅供參考,它工作沒有51Degrees。查看交換機不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" })
請讓我知道如果我錯過了事端G。
在此先感謝。
只要您使用Context.GetOverriddenBrowser() – user2027901