ASP.NET MVC ActionLink вне области - PullRequest
       7

ASP.NET MVC ActionLink вне области

30 голосов
/ 21 сентября 2010

Простая задача в MVC, иногда становится сложной задачей.

Что ж, у меня есть область под названием Admin.У меня есть страница с именем «Запрещено» внутри каталога Shared в этой области.

Цель проста: мне нужно создать Html.ActionLink, который генерирует ссылку для возврата на домашнюю страницу, которая ВНЕ область администратора.

Итак, я пытаюсь, <%= Html.ActionLink("Back","Index",new {controller="Home"})%>, и генерирую:

http://localhost/Admin/Home/Index

Это неправильно!Как создать ссылку из области на структуру контроллеров по умолчанию?

1 Ответ

53 голосов
/ 21 сентября 2010

Попробуйте это:

<%= Html.ActionLink("Back", "Index", "Home", new { area = "" }, null) %> 

При использовании областей вы всегда должны указывать область, которую вы вызываете, в ваших ссылках ActionLink, добавляя значение маршрута, как указано выше. Если ссылка находится за пределами области (как в вашем случае), просто используйте пустой параметр для области.


Есть хорошее расширение, которое я считаю необходимым в любом проекте ASP.NET MVC ( T4MVC ). Это делает ваши ActionLinks более чистыми и защищает их от ошибок.

Таким образом, приведенный выше код будет выглядеть примерно так:

<%= Html.ActionLink("Back", MVC.Home.Index()) %>

и при использовании области:

<%= Html.ActionLink("Some Link", MVC.Admin.SomeController.SomeAction()) %>

Это часть MvcContrib проекта на codeplex здесь

Вы должны рассмотреть возможность его использования.

...