6

在我的 ASP.NET MVC 3 Web 应用程序中,我将覆盖自定义视图引擎中的视图名称,以呈现针对非平板电脑移动设备优化的不同视图。

我想要执行此视图覆盖的只是Request.Browser.IsMobileDevice设备的本机显示宽度的准确值。

对于这个简单的用例,51degrees.mobi 感觉非常沉重和复杂。也许这只是我在尝试浏览 51degrees 网站上的所有示例和文档以获得简单实现的简单问题的答案时的挫败感。

如果没有 51 度,我确实得到Request.Browser.IsMobileDevice和的值Request.Browser.ScreenPixelsWidth。我注意到对于桌面浏览器,宽度始终为 640,Request.Browser.Capabilities["51Degrees.mobi"]ScreenPixelsWidth. 考虑到实现的服务器端性质,我猜 Unknown 值更准确。

我的主要问题是:我的简单要求真的需要 51 度吗?

如果我不使用 51degrees,是否有一些特定的浏览器示例无法正确检测 IsMobileDevice 和屏幕宽度?例如,对于新 iPad 或最新的 Android 浏览器版本,内置的 .NET Request.Browser.IsMobile 和 ScreenPixelsWidth 值是否不准确或不存在?我的网站有大约 65% 的移动用户,其中许多使用带有 UP.Browser 等浏览器的蹩脚功能手机,因此正确使用移动设备有点重要。

如果我使用 51degrees,我是否需要一直深入到 Request.Browser.Capabilities["51Degrees.mobi"]?或者 51degrees 是否覆盖/更新 Request.Browser.IsMobileDevice 的值以与其对浏览器的评估同步?显然它不会覆盖 Request.Browser.ScreenPixelsWidth。

只要他们不建议 MVC 4 或不涉及 WURFL 等付费解决方案,我愿意接受“你做错了,这是更好的方法”的答案。

4

1 回答 1

4

常见问题解答解释了 Request.Browser 的哪些属性被 51Degrees.mobi 覆盖。

在极少数情况下,您应该直接访问“51Degrees.mobi”键。如果该属性已被覆盖,则可以像往常一样访问它。如果属性未被覆盖或未被 HttpBrowserCapabilities 覆盖,则应使用属性名称。例如:

var isTablet = Request.Browser["IsTablet"];

有关可用属性的列表,请参阅此链接

因为它应该覆盖 ScreenPixelsWidth 我有兴趣了解更多关于您的测试环境的信息。由于 .NET 要求该值是数字,如果 51Degrees.mobi 无法确定大小(未知),那么该值将不会被覆盖。

感谢您考虑 51Degrees.mobi。

于 2012-03-15T12:33:20.660 回答