Использование Url.RouteUrl () с именами маршрутов в области
Как примечание стороны, я понимаю всюнеоднозначные имена контроллеров проблема и использовать пространство имен, чтобы мои маршруты работали, поэтому я неНе думаю, что это проблема здесь.
Пока у меня есть контроллеры уровня проекта, а затем область пользователя со следующей регистрацией:
public class UserAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "User";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"UserHome",
"User/{id}",
new { action = "Index", controller = "Home", id = 0 },
new { controller = @"Home", id = @"\d+" }
);
context.MapRoute(
"UserDefault",
"User/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
"домашний каталог» маршрут есть, поэтому я могу позволить маршрут/User/5
против/User/Home/Index/5
который выглядит чище ИМО.
В идеале я хотел бы использоватьUrl.RouteUrl("UserHome", new { id = 5 })
, чтобы создать маршрут в другом месте, но это всегда либо возвращается пустым, либо дает мне исключение, говоря, что он не может найти имя маршрута, который, очевидно, там.
Однако, когда я используюUrl.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
это работает без проблем.
Почему я должен указывать действие и контроллер, если их значения по умолчанию уже есть в отображении маршрута? Что мне не хватает?