在我的 ASP.NET MVC 3 Web 应用程序中,我重写自定义 View 引擎中的 View 名称,以呈现针对非平板电脑移动设备优化的不同 View 。
我想要执行此 View 覆盖的只是 Request.Browser.IsMobileDevice
的准确值和设备的 native 显示宽度。
51 Degrees.mobi 对于这个简单的用例来说感觉非常沉重和复杂。也许这只是我的挫败感,因为我试图费力地浏览 51 Degrees 网站上的所有示例和文档,以获取看似简单的问题的答案,以实现简单的实现。
如果没有 51 度,我确实获得了 Request.Browser.IsMobileDevice
和 Request.Browser.ScreenPixelsWidth
的值。我注意到,对于桌面浏览器,宽度始终为 640,而 Request.Browser.Capability["51Degrees.mobi"]
包含 ScreenPixelsWidth
的值“Unknown”。考虑到实现的服务器端性质,我认为“未知”值更准确。
我的主要问题是:我真的需要 51 度来满足我的简单需求吗?
如果我不使用 51 Degrees,是否有一些特定的浏览器示例导致我无法正确检测 IsMobileDevice 和屏幕宽度?例如,对于新 iPad 或最新的 Android 浏览器版本,内置的 .NET Request.Browser.IsMobile 和 ScreenPixelsWidth 值是否不准确或不存在?我的网站拥有大约 65% 的移动用户,其中许多人使用的是带有 UP.Browser 等浏览器的蹩脚功能手机,因此正确使用移动设备相当重要。
如果我使用 51 Degrees,我是否需要始终深入了解 Request.Browser.Capability["51Degrees.mobi"]?或者 51°s 是否会覆盖/更新 Request.Browser.IsMobileDevice 的值以与其对浏览器的评估保持同步?显然它不会覆盖Request.Browser.ScreenPixelsWidth。
我愿意接受“你做错了,这里有更好的方法”的答案,只要他们不建议使用 MVC 4 或涉及 WURFL 等付费解决方案。
最佳答案
这个FAQ解释了 Request.Browser 的哪些属性被 51Degrees.mobi 覆盖。
极少数情况下您应该直接访问“51Degrees.mobi” key 。如果该属性已被覆盖,则可以像平常一样访问它。如果该属性未被覆盖或未被 HttpBrowserCapability 覆盖,则应使用属性名称。例如:
var isTablet = Request.Browser["IsTablet"];
查看此link获取可用属性的列表。
由于它应该覆盖 ScreenPixelsWidth,我有兴趣了解有关您的测试环境的更多信息。由于 .NET 要求该值是数字,如果 51Degrees.mobi 无法确定大小(未知),则该值不会被覆盖。
感谢您考虑 51Degrees.mobi。
关于asp.net-mvc - ASP.NET MVC 3 简单可靠的移动设备检测 : use 51degrees. mobi 还是原生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9706698/