在我的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
的值“未知”。鉴于实现的服务器端性质,我认为未知值更准确。
我的主要问题是:对于我的简单要求,我真的需要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等付费解决方案。
答案 0 :(得分:4)
这个FAQ解释了51.Degrees.mobi覆盖了Request.Browser的哪些属性。
在极少数情况下,您应该直接访问“51Degrees.mobi”键。如果财产被覆盖,请像往常一样访问它。如果属性未被覆盖或未被HttpBrowserCapabilities覆盖,则应使用属性名称。例如:
var isTablet = Request.Browser [“IsTablet”];
有关可用属性的列表,请参阅此link。
因为它应该覆盖ScreenPixelsWidth,我有兴趣了解有关您的测试环境的更多信息。由于.NET要求值为数字,如果51Degrees.mobi无法确定大小(未知),则不会覆盖该值。
感谢您考虑51Degrees.mobi。