Использование 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 }) это работает без проблем.

Почему я должен указывать действие и контроллер, если их значения по умолчанию уже есть в отображении маршрута? Что мне не хватает?

Ответы на вопрос(3)

Ваш ответ на вопрос