在mvc3中检测移动设备的最佳做法是什么?

时间:2011-12-29 16:24:48

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

我正在启用其中一个网站,将某些网页重定向到移动版本。我已阅读Steve SandersonShiju Varghese关于属性使用和51degrees.mobi的博文。

如果设备是移动设备,我希望发生的是给定页面,经销商定位器,重定向到/ mobile / dealer-locator。为了实现这一点,我使用dealerlocator控制器和必要的视图设置了一个区域。我直接测试了代码,它似乎正常工作。

当我从实际设备或FF访问该站点并将用户代理更改为iPhone 3.0时,我被重定向到/ mobile。有没有一种简单的方法可以将页面路由映射到移动路由?

我应该提到该网站使用的是isapi_rewrite,并且该网页的规则是将/ dealer-locator映射到/ dealerlocator并且dealerlocator是控制器。

我也注意到表单帖子似乎没有正常工作,所以它现在可以实现。

1 个答案:

答案 0 :(得分:0)

来自Shiju Varghese的博客文章(您的问题提及),RedirectMobileDevicesToMobileAreaAttribute类的方法:

// Override this method if you want to customize the controller/action/parameters to which
// mobile users would be redirected. This lets you redirect users to the mobile equivalent
// of whatever resource they originally requested.
protected virtual RouteValueDictionary GetRedirectionRouteValues(RequestContext requestContext)
{
    return new RouteValueDictionary(new { area = "Mobile", controller = "Home", action = "Index" });
}
可以覆盖

来处理这个问题。

在他的示例中,所有内容似乎都发送到~/Mobile/Home/Index,但您可以将请求发送到任何地方。他正在创建一个新的路由表,与您在非移动路由的Global.asax.cs中定义的路由表相同。您可以替换整个路由表,也可以遍历现有路由并返回仅包含移动平均值的字典。