Как я могу сделать маршрут без идентификатора - PullRequest
0 голосов
/ 03 апреля 2019

Не работает маршрут "Admin" без {id}

public class PublicAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        { return "Public"; }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
    }
}

public class AdminAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        { return "Admin"; }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin",
            "admin/{controller}/{action}/{id}",
            new { id = UrlParameter.Optional }
            );
    }
}

Я могу использовать это: ../admin/car/edit/3 Но я не могу этого: ../ admin / car / edit

Если я удалю маршрут "Default", я смогу использовать оба.Почему я не могу использовать «../admin/car/edit» с маршрутом «по умолчанию»?

1 Ответ

0 голосов
/ 03 апреля 2019

Мне пришлось изменить порядок регистрации области, например:

        App_Start.AutoMapperConfig.Initialize();
        //AreaRegistration.RegisterAllAreas();

        var adminArea = new rentcar2.Areas.Admin.AdminAreaRegistration();
        var adminAreaContext = new AreaRegistrationContext(adminArea.AreaName, RouteTable.Routes);
        adminArea.RegisterArea(adminAreaContext);

        var defaultArea = new rentcar2.Areas.Public.PublicAreaRegistration();
        var defaultAreaContext = new AreaRegistrationContext(defaultArea.AreaName, RouteTable.Routes);
        defaultArea.RegisterArea(defaultAreaContext);
...