Требуется ли указывать значение маршрута "area" в actionlink, если приложение было сгруппировано по областям? - PullRequest
10 голосов
/ 05 апреля 2011

У меня есть область под названием «UserProfile». И из его представления индекса я хочу вызвать действие от корневого контроллера (не области). Я использовал Html.ActionLink («Индекс», «Домой»)

Когда я запустил приложение, сгенерированный URL-адрес "/ UserProfile / Home / Index" вместо "/Home/Index".

Root
Просмотр Index.aspx
Контроллер: приложение / контроллер / HomeController
Path: App / Views / Home

Область
Вид: Index.aspx
Путь: приложение / области / профиль пользователя / представления / пользователь
ActionLink: Html.ActionLink («Индекс», «Домой»)

Ответы [ 2 ]

14 голосов
/ 09 мая 2011

Да, если вы работаете с областями, вы должны всегда указать Area в ActionLink ссылках, пустую, если вы не хотите, чтобы ссылка переходила в определенную область,как это:

Html.ActionLink("Home", "Index", "Home", new { Area = "" }, new { })

Это необходимо, потому что в противном случае, если вы не укажете Area, будет использоваться тот, где пользователь находится в данный момент.

Если, например, вы используете ActionLink без указания Area на своей странице _Layout.cshtml, он будет работать до тех пор, пока вы остаетесь в корне вашего Приложения.С того момента, как вы войдете в область, ссылка будет сгенерирована как \currentArea\the_rest_of_the_link и, следовательно, больше не будет работать.

0 голосов
/ 14 мая 2011

Я предпочитаю метод RouteLink, поскольку он будет отображать его точно.

@Html.RouteLink( 
      "Home Page", 
      "Default", 
      new 
      { 
         Action = "Index", 
         Controller = "Home" 
      } 
)

Дайте ему шанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...