Область по умолчанию MVC не работает - PullRequest
2 голосов
/ 05 марта 2012

У меня есть веб-сайт, на котором не было зарегистрировано ни одной области.Затем я зарегистрировал область под названием "MyNewArea".

Теперь ссылки на веб-сайты по умолчанию, такие как блоги и т. Д., Больше не работают.

Так что теперь у меня есть папка областей с одной областью ипапки по умолчанию при создании проекта.

В моем районе AreaRegistration класс, который у меня есть;

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

, но это похоже на конфликт по умолчанию с одним из

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

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

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Вы правы, этот сопоставленный маршрут будет конфликтовать (в смысле "конфликт" , поскольку в нем будет сопоставляться первым).Вам нужно будет изменить свой отображенный маршрут по маршруту следующим образом:

        context.MapRoute(
            "MyArea_default",
            "MyArea/{controller}/{action}/{id}",
            new { controller = "MyAreaController", action = "Index", id = UrlParameter.Optional }
        );

Причина, по которой ваши URL-адреса перестали работать после добавления этой области (и, в свою очередь, по маршруту области), использовала ваш маршрут по территории для обработкикоторые не существовали в вашей MyArea области.

1 голос
/ 05 марта 2012

Измените новую таблицу маршрутов области на:

context.MapRoute(
    "MyArea_default",
    "MyNewArea/{action}/{id}",
    new { controller = "MyNewArea", action = "Index", id = UrlParameter.Optional }
);
...