我有一个包含多个区域的MVC3应用程序。每个区域都是不同的应用程序模块,但它们共享一个共同的功能 - 报告。因此,我在根区域编写了一个报告控制器和视图,并希望使用路由将它们附加到所有区域。这种方法适用于MVC1,但随后我升级到MVC3,路由停止工作并始终返回404.
每个模块/区域的路由结构类似:
Module1/Reports.aspx/
Module1/PreportView.aspx/{id}
Module1/{controller}/{action}
Module1/{controller}/{action}/{id}
并且模块的路由注册通过以下方法进行:
protected override void RegisterRoutes(AreaRegistrationContext context, string arearoot, string defaultControllerName){
context.MapRoute(arearoot + "Reports", arearoot + "/Reports.aspx",
new { action = "Index", controller = "Reports" }, new string[] { "Controllers" }); //this should work in MVC3 according to docs
context.MapRoute(arearoot + "ReportView", arearoot + "/ReportView.aspx/{id}",
new { action = "Show", controller = "Controllers.ReportsController" });//this method worked in MVC1
context.MapRoute(arearoot,
arearoot + "/{controller}.aspx/{action}",
new { controller = defaultControllerName, action = "Index" },
GetRouteNamespaces());
context.MapRoute(arearoot + "ItemSpecific",
arearoot + "/{controller}.aspx/{action}/{id}");
}
protected string[] GetRouteNamespaces() {
return new string[] { "Controllers.Module1" }; //returns proper namespace for each module
}
我试图附加 RouteDebugger (由于.aspx扩展名失败)和 Glimpse ,但是没有一个显示我有任何问题,路由表似乎没问题,但是当我尝试导航到报告时,我总是得到404错误代码。
有什么想法吗?
答案 0 :(得分:0)