У меня есть приложение 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.
Есть идеи?