2011-11-29 2 views
3

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

Любые идеи?

+0

, как вы называете действия (в вашем ASPX/с-Files)? – Tobias

ответ

0
  • Просьба проверить маршруты регистрации в вашем регионе.
    • Также получите весь список зарегистрированного маршрута во время отладки. Маршрут регистрируется у многих в ASP.net MVC 2 или более поздней, если вы используете .
      • Вы также должны указать область при регистрации маршрута. (Точно так же, как было указано Controller)
Смежные вопросы