1

我正在使用同时具有桌面和移动视图的 MVC 4 开发一个网站。我在我的 Global.asax 中创建了一个 DisplayModeProvider 条目,它允许 iPhone 或 Android 手机。

我希望用户能够通过单击按钮在移动设备和桌面设备之间切换。所以我创建了一个在桌面和移动设备之间更改的视图,如下所示......

@If (ViewContext.HttpContext.GetOverriddenBrowser().IsMobileDevice) Then
    @Html.ActionLink("Desktop View", "SwitchView", "Navigation", New With {.Mobile = False, .ReturnUrl = Request.Url.PathAndQuery}, New With {.rel = "external", .data_role = "button", .data_inline = "true"})
Else
    @<a href="@Url.Action("SwitchView", "Navigation", New With {.Mobile = True, .ReturnUrl = Request.Url.PathAndQuery})">Mobile View</a>
End If

......这就是行动......

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 上完美运行。

但现在我正在使用三星 Galaxy S3 (Android) 进行测试。在 Windows 7 IIS 上,这可以完美运行。但是,当我在 2003 Server IIS 上运行相同的网站时,它不起作用。

我认为这是因为浏览器文件 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\Browsers 已过时,因此 IsMobileDevice 为 Android 返回 False。

问题:-

  1. 是否可以修改上面的代码以使 Android 工作?我不确定我会在 Action 中进行哪些更改以使其正常工作。

  2. 或者,是否可以在项目级别修改浏览器文件,以便 Android 在 2003 服务器上为 IsMobileDevice 返回 True?我不想更新机器本身的浏览器定义文件,因为我们将我们的网站分发给数十个不同的客户,并且首选项目级解决方案。

4

0 回答 0