超级简单的 MVC 站点,带有一个区域来处理移动设备。除了需要参数的视图外,我所有的区域路由都可以正常工作。
在“正常”站点中,我有一个需要参数的查看视频页面。
mysite.com/Video/123456
这完美地工作。在我的区域为移动内容进行了一些斗争之后,我什至开始在我的控制器和视图中使用完全相同的代码/标记。所以我希望以下网址:
mysite.com/Mobile/Video/123456
会妥善解决。它没有。我得到一个 404(未找到)。如果我关闭参数:
mysite.com/Mobile/Video
它可以正确解决。
我确信这一定是我在路由中做错了。以下是我的 global.asax 中的相应部分。任何帮助,将不胜感激。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Video", // Route name
"Video/{id}", // URL with parameters
new { controller = "Video", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Controllers.VideoController" }
);
routes.MapRoute(
"NewsItem", // Route name
"NewsItem/{id}", // URL with parameters
new { controller = "NewsItem", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Controllers.HomeController" }
);
routes.MapRoute(
"Mobile", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { area = "Mobile", controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Areas.Mobile.Controllers.HomeController" }
);
routes.MapRoute(
"Mobile/Video", // Route name
"Mobile/Video/{id}", // URL with parameters
new { area = "Mobile", controller = "Video", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Areas.Mobile.Controllers.VideoController" }
);
}