我正在使用Scott Hanselman在此处描述的 MobileViewEngines 和51Degrees.mobi浏览器数据库来为移动和桌面浏览器呈现不同的视图。
我现在想添加一个中间立场。适用于高端移动浏览器(苹果、安卓、windows phone、一些黑莓等)。我正在考虑使用触摸屏来区分这一类别。
所以,两个问题:
- 如何使用 51Degrees.mobi 检测触摸屏?
- 触摸输入是一种很好的方法吗?(我需要桌面、高端、低端类)
我正在使用Scott Hanselman在此处描述的 MobileViewEngines 和51Degrees.mobi浏览器数据库来为移动和桌面浏览器呈现不同的视图。
我现在想添加一个中间立场。适用于高端移动浏览器(苹果、安卓、windows phone、一些黑莓等)。我正在考虑使用触摸屏来区分这一类别。
所以,两个问题:
我在 51Degrees.mobi 工作。您可以使用以下方法检测设备是否为触摸屏Request.Browser["IsTouchScreen"]
然而,在 MVC 中优雅地使用它有点复杂。从 MobileCapableViewEngine 的来源看来,您可以通过复制移动引擎并更改 FindView 方法来制作新引擎:
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName,
string masterName, bool useCache)
{
string overrideViewName = controllerContext.HttpContext.Request.Browser["IsTouchScreen"] == "True"
? viewName + ".Touch"
: viewName;
ViewEngineResult result = NewFindView(controllerContext, overrideViewName, masterName, useCache);
// If we're looking for a Touch view and couldn't find it try again without modifying the viewname
if (overrideViewName.Contains(".Touch") && (result == null || result.View == null))
{
result = NewFindView(controllerContext, viewName, masterName, useCache);
}
return result;
}
然后需要将这个新引擎添加到移动引擎引导程序并创建触摸视图。
不过,在执行此操作之前,您应该考虑这是否是您想要分离设备的方式。例如,诺基亚 X3-02 的屏幕相对较小,但呈现的视图与 iPad 类似。也许您应该考虑使用设备的操作系统,即Request.Browser["PlatformName"]
最后,51Degrees.mobi Foundation 第 2 版引入了我们自己的设备数据,它使用与之前不同的能力名称。您可以在 51Degrees.mobi 阅读有关它的mroe