У меня есть приложение MVC3 с несколькими областями. Каждая область - это другой прикладной модуль, но у них есть одна общая функциональность - Отчетность. Итак, я написал контроллер отчетов и просмотрел его в корневой области и хотел прикрепить их ко всем областям с использованием маршрутизации. Этот метод хорошо работает с MVC1, но потом я повышен до MVC3, маршруты перестали работать и всегда возвращаются 404.MVC3: Один контроллер, несколько маршрутов
структуры маршрутизации одинакова для каждого модуля/площади:
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.
Любые идеи?
, как вы называете действия (в вашем ASPX/с-Files)? – Tobias