.mobile
我正在使用 ASP.NET MVC 5。我为某些特定场景渲染了一堆视图。
我注意到 Android 上的 Mozilla Firefox 移动应用程序没有获得.mobile
渲染视图的版本,所以就像 ASP.NET 没有检测到设备是移动的。
用户代理字符串是:
Mozilla/5.0(安卓;移动;rv:39.0) Gecko/39.0 Firefox/39.0
有没有办法可以全局覆盖移动检测来强制执行此操作?
.mobile
我正在使用 ASP.NET MVC 5。我为某些特定场景渲染了一堆视图。
我注意到 Android 上的 Mozilla Firefox 移动应用程序没有获得.mobile
渲染视图的版本,所以就像 ASP.NET 没有检测到设备是移动的。
用户代理字符串是:
Mozilla/5.0(安卓;移动;rv:39.0) Gecko/39.0 Firefox/39.0
有没有办法可以全局覆盖移动检测来强制执行此操作?
是的,你可以,DisplayModeProvider
在System.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 的另一个视图等。更多信息可以在这里找到。