3

.mobile我正在使用 ASP.NET MVC 5。我为某些特定场景渲染了一堆视图。

我注意到 Android 上的 Mozilla Firefox 移动应用程序没有获得.mobile渲染视图的版本,所以就像 ASP.NET 没有检测到设备是移动的。

用户代理字符串是:

Mozilla/5.0(安卓;移动;rv:39.0) Gecko/39.0 Firefox/39.0

有没有办法可以全局覆盖移动检测来强制执行此操作?

4

1 回答 1

3

是的,你可以,DisplayModeProviderSystem.Web.WebPages命名空间中使用。

您可以将自己的逻辑添加到DisplayModeProvider以确定应呈现哪个视图。

如果您将此添加到您的启动或应用程序初始化中:

DisplayModeProvider.Instance.Modes
.Add(new DefaultDisplayMode("Mobile")
                {
                    ContextCondition = context => {
                        var userAgent = context.GetOverriddenUserAgent();
                        return userAgent.IndexOf("Android", StringComparison.OrdinalIgnoreCase) > -1
                               && userAgent.IndexOf("Mobile", StringComparison.OrdinalIgnoreCase) > -1
                               && userAgent.IndexOf("Firefox", StringComparison.OrdinalIgnoreCase) > -1;
                    }
                });

这会将在 User Agent 字符串中具有 和 的 http 请求定向"Android""Mobile"Mobile"Firefox"为后缀的视图。

同样,您可以为特定设备创建特定的覆盖和视图,即 iPhone 4 的视图、iPhone 5 的另一个视图等。更多信息可以在这里找到。

于 2015-07-25T17:18:34.553 回答