Контроллер по умолчанию для области? - PullRequest
2 голосов
/ 14 апреля 2010

Это своего рода дубликат Проблемы с настройкой контроллера по умолчанию в MVC 2 RC Area

Но его ответ меня не устраивает, потому что он не работает.

У меня есть следующее

/Areas/TestArea/Controllers/HelloController
/Areas/TestArea/Views/Hello/Index

/Controllers/HomeController
/Views/Home/Index

Со следующими маршрутами:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

routes.MapRoute(
    "Default2", // Route name
    "TestArea/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Hello", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

Я добавил второй, чтобы попытаться заставить http://servername/TestArea работать, как если бы это было http://servername/TestArea/Hello, но безуспешно. Базовый http://servername/ работает как задумано.

Итак, вопрос: как вернуть контроллер по умолчанию в области?

Редактировать: я загрузил пример проекта, чтобы показать, что я имею в виду: http://beginningasp.net/TestAsync.zip

1 Ответ

3 голосов
/ 14 апреля 2010

Попробуйте зарегистрировать маршрут Default2 перед маршрутом по умолчанию и задайте area = yourareaname в значениях по умолчанию

routes.MapRoute(
    "Default2", // Route name
    "TestArea/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Hello", action = "Index",area="TestArea",  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
);
...