Вопрос

Я работаю над новым проектом, в котором хочу использовать идею Фила Хаака Areas (1) + настройку Стива Сандерсона (2).У меня есть простое корневое представление со ссылкой на действие для просмотра области (Foo).Созданный URL-адрес имеет правильную область, но в конце добавляется корневой контроллер (Bar).Вот мой код корневого представления:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo" } )%>

</asp:Content>

и вот URL-адрес, который он генерирует:

локальный хост: 6494/Фу/Бар

Есть идеи, почему там находится «/Bar»?

(1): haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx

(2): blog.codeville.net/2008/11/05/app-areas-in-aspnet-mvc-take-2/

Это было полезно?

Решение

Я нашел решение.Я не думаю, что это уместно, поэтому попрошу улучшения.Указав имя контроллера, я могу правильно сформировать URL-адрес.И.Е.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo", controller="Baz" } )%>

</asp:Content>

Как только я это сделал, URL-адрес был правильным.

локальный хост: 6494/Foo

Почему это проблема?В демо Фила используется контроллер с именем HomeController.Я не знаю (потому что не могу отследить), как метод Html.ActionLink() создает URL-адрес;но похоже, что он полагается на существующий по умолчанию вариант HomeController, которого у меня нет.

Если у кого-то есть предложения о том, как разрешить использовать контроллеры с именем «Home» по умолчанию, ответьте.Спасибо

Другие советы

Не иметь Home в качестве имени контроллера по умолчанию, просто изменить маршрут по умолчанию.

@Джо

В файле App_Start/RouteConfig.cs вам нужно изменить значение контроллера по умолчанию с «Домой» на то, что вам нравится:

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top