ASP.NET MVC 3简单可靠的移动设备检测:使用51degrees.mobi还是去原生?

时间:2012-03-14 17:10:26

标签: asp.net-mvc asp.net-mvc-3 mobile 51degrees

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

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

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

缺少51度,我确实获得了Request.Browser.IsMobileDeviceRequest.Browser.ScreenPixelsWidth的值。我注意到对于桌面浏览器,宽度始终为640,而Request.Browser.Capabilities["51Degrees.mobi"]包含ScreenPixelsWidth的值“未知”。鉴于实现的服务器端性质,我认为未知值更准确。

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

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

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

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

1 个答案:

答案 0 :(得分:4)

这个FAQ解释了51.Degrees.mobi覆盖了Request.Browser的哪些属性。

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

var isTablet = Request.Browser [“IsTablet”];

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

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

感谢您考虑51Degrees.mobi。