Как мне настроить следующие не области маршруты?
/ foo / {controller} / {action} / {id}
отображается наконтроллеры в пространстве имен myapp.foo.
/ {controller} / {action} / {id}
отображаются на контроллеры в пространстве имен myapp.
У меня также есть2 области, бар и баз , они зарегистрированы в registeraAllAreas.
Моя текущая настройка
Это мои текущие настройки.Это дает проблему ниже, когда я использую url /Home/Index.
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("myapp/elmah.axd/{*pathInfo}");
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
"foo", // Route name
"foo/{controller}/{action}/{id}", // URL with parameters
new { action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "myapp.Controllers.foo" }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "myapp.Controllers" }
);
Было найдено несколько типов, которые соответствуют контроллеру с именем 'Menu'.Это может произойти, если маршрут, обслуживающий этот запрос ( 'foo / {controller} / {action} / {id}' ), не указывает пространства имен для поиска контроллера, соответствующего запросу.
Запрос 'Menu' обнаружил следующие подходящие контроллеры: myapp.Controllers.MenuController
myapp.Areas.bar.Controllers.MenuController
myapp.Areas.baz.Controllers.MenuController
Очевидно, что я что-то делаю не так.
Обновление
Я также получаю неправильный адрес, генерируемый при использовании:
<% using (Ajax.BeginForm("SaveSomething", "Home", ...
Это делает<form target="/foo/Home/SaveSomething"
Я предполагаю, что нельзя надежно использовать {controller} на двух маршрутах в одной и той же области.
Обновление 2
Этокажется, работает намного лучше, когда я помещаю регистрацию маршрута / foo внизу.
Это поднимает вопрос, что считается маршрутом по умолчанию?(Поскольку маршрут по умолчанию рекомендуется поместить в самый конец.)