【发布时间】:2011-03-07 06:04:21
【问题描述】:
我正在尝试创建看起来像这样的 URI:
http://hostname/mobile/en/controller/action 用于手机或http://hostname/en/controller/action 用于桌面(非手机)。
我的路由表目前看起来像这样 (Global.asax.cs)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Mobile", // Route name
"mobile/{language}/{controller}/{action}/{id}", // URL with parameters
new { language = "en", controller = "Route", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { language = @"en|us" } // validation
);
routes.MapRoute(
"Default", // Route name
"{language}/{controller}/{action}/{id}", // URL with parameters
new { language = "en", controller = "Route", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { language = @"en|us" } // validation
);
当我尝试做一个
return RedirectToAction("Add", "User");
当我希望桌面浏览器转到/en/User/Add 时,它总是将桌面浏览器从/en/User/List 重定向到/mobile/en/User/Add。
移动版可以正常工作,但我相信这是因为第一个“移动”路由总是被视为匹配的路由,即使它在开始时没有 /mobile/。
我正在尝试为两个版本使用相同的 Controller,但我一直坚持它总是重定向到 Mobile 路由。这意味着RedirectToRoute 不是完美的,因为我想要动态路由。
感谢您的帮助。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-2 routing asp.net-mvc-routing