2011-12-29 66 views
0

我正在启用我的某个网站将某些网页重定向到移动版本。我已阅读关于属性使用和51degrees.mobi的Steve SandersonShiju Varghese的博客文章。在mvc3中检测移动设备的一些最佳做法

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

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

我应该提到,该网站使用isapi_rewrite和有问题的网页有规则,映射/经销商定位器/ dealerlocator和dealerlocator是一个控制器。

我也注意到,表单帖子看起来不能正常工作,所以它现在得到了一个get。

+1

您可能想看看支持手机的MVC 4测试版。查看更多[here:](http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-4-mobile-features) – gdoron 2011-12-29 16:35:24

回答

0

从石咀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中为您的非移动路由定义的路由表。您可以替换整个路由表,也可以循环访问现有路由并返回仅包含移动设备的字典。