我有一个 MVC 4 项目,它有一个在桌面或移动设备之间切换的视图。
这是您在桌面网站上时的视图...
<a href="@Url.Action("SwitchView", "Home", New With {.Mobile = True, .ReturnUrl = Request.Url.PathAndQuery})">Mobile View</a>
这是您在移动网站上时的视图...
<a href="@Url.Action("SwitchView", "Home", New With {.Mobile = False, .ReturnUrl = Request.Url.PathAndQuery})">Desktop View</a>
这是调用的动作...
Public Function SwitchView(Mobile As Boolean, ReturnUrl As String) As RedirectResult
If Request.Browser.IsMobileDevice = Mobile Then
HttpContext.ClearOverriddenBrowser()
Else
HttpContext.SetOverriddenBrowser(If(Mobile, BrowserOverride.Mobile, BrowserOverride.Desktop))
End If
Return Redirect(ReturnUrl)
End Function
在 iPhone 5 和 iOS 6 上运行完美。我可以从移动视图切换到桌面视图,然后再次切换回移动视图。
在带有 iOS 4.1 的 iPhone 3 上,它不起作用。它最初更正显示移动视图,我可以正确切换到桌面视图,但我无法切换回移动视图。
我试过用...替换动作
Public Function SwitchView(Mobile As Boolean, ReturnUrl As String) As RedirectResult
HttpContext.SetOverriddenBrowser(BrowserOverride.Mobile)
Return Redirect(ReturnUrl)
End Function
这没什么区别。我的用户代理字符串如下...
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-gb) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7
如果我在 IE 10 中强制我的用户代理字符串是这样的,它工作得非常好,所以我认为这是与检测用户代理相反的某种 iPhone 问题。
任何人都知道为什么切换回移动视图不起作用?