Подтвердить что ты не робот

ActionLink и Url.Action предназначены для разных местоположений, когда атрибут area указан в Asp.net MVC 4

В _LoggedInUser.cshtml(который находится в папке Views/Shared в корне приложения). Я хочу вызвать метод Logout контроллера AC. У меня есть два варианта:

Использование ActionLink

@Html.ActionLink("Logout", "Logout", "AC", new { area = string.Empty })

ИЛИ

<a href="@Url.Action("Logout", "AC", new { area = string.Empty })">Logout</a>

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

Насколько я понимаю, разница между @Html.ActionLink() и @Url.action заключается в том, что сначала генерируется якорный тег, где второй возвращает URL-адрес (пожалуйста, исправьте меня, если я ошибаюсь), поэтому я думаю, что оба должны цель в том же месте, но здесь @Html.ActionLink имеет следующее расположение ссылки:

http://localhost:13974/Home/logout?Length=2

тогда как <a href="@Url.Action(.... имеет следующее местоположение ссылки:

http://localhost:13974/AC/Logout

Обе ссылки работают нормально, когда атрибут области удаляется, но @Html.ActionLink() ломается, когда я указываю область

Почему обе ссылки нацелены на разные местоположения, когда я указываю область?

4b9b3361

Ответ 1

Вы можете использовать

@Html.ActionLink("Logout", "Logout", "AC", new { area = string.Empty }, null)

Вы можете использовать перегрузку, LinkExtensions.ActionLink Method (HtmlHelper, String, String, String, Object, Object)

Для получения дополнительной информации посетите LinkExtensions.ActionLink

Кроме того,

Нет перегрузки как LinkExtensions.ActionLink Method (HtmlHelper, String, String, String, Object)

Ответ 2

Что вы хотите, это перегрузка:

//linkText, actionName, controllerName, routeValues, htmlAttributes

<%=Html.ActionLink("Logout", "Logout", "AC", new {area = string.Empty}, null) %>

попробуйте и сообщите нам, если это решит проблему.

Ответ 3

Вы используете неправильную перегрузку метода ActionLink. Измените его на

@Html.ActionLink("Logout", "Logout", "AC", null, new { area = string.Empty })