ASP MVC href к контроллеру / представлению

96

У меня есть это:

<li><a href="/Users/Index)" class="elements"><span>Clients</span></a></li>

Что отлично работает. Но если я уже на этой странице или на контроллере, например, /Users/Detailsи нажимаю на эту ссылку, она меня перенаправляет /Users/Index.

Как я могу получить правильный путь hrefнезависимо от моего текущего положения на сайте?

Запнологика
источник
1
Go Thru This ..: codeproject.com/Tips/583469/…
Рави Мехта

Ответы:

181

Есть несколько способов добиться этого. Вы можете сделать следующее:

<li>
     @Html.ActionLink("Clients", "Index", "User", new { @class = "elements" }, null)
</li>

или это:

<li>
     <a href="@Url.Action("Index", "Users")" class="elements">
          <span>Clients</span>
     </a>
</li>

В последнее время делаю следующее:

<a href="@Url.Action("Index", null, new { area = string.Empty, controller = "User" }, Request.Url.Scheme)">
     <span>Clients</span>
</a>

Результат будет http://localhost/10000(или с любым другим портом, который вы используете), который будет добавлен к структуре URL, например:

http://localhost:10000/Users

Надеюсь, это поможет.

Брендан Фогт
источник
19

как насчет

<li>
<a href="@Url.Action("Index", "Users")" class="elements"><span>Clients</span></a>
</li>
FosterZ
источник
8

Попробуйте следующее:

<a asp-controller="Users" asp-action="Index"></a>

(Действительно для ASP.NET 5 и MVC 6)

Джон Шредер
источник
Это не подходит для ASP.NET. Возможно, действительно для старых страниц ASP.
Zanon
2
Действительно только для ASP.NET 5, т.е. MVC 6
Ифеани Чукву,
6

Здесь '~' относится к корневому каталогу, где Home - это контроллер, а Download_Excel_File - метод действия.

 <a href="~/Home/Download_Excel_File" />
искусственный
источник
5

Вы можете изменить с помощью следующих

<li><a href="./Index" class="elements"><span>Clients</span></a></li>

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

<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
ркшаджиб
источник
1
Отличный приятель.
Чандан Кумар,
1
Легко и приятно! В 10 раз!
Alex123
3

Вы также можете использовать эту очень упрощенную форму:

@Html.ActionLink("Come back to Home", "Index", "Home")

Где:
Come back to Homeтекст, который будет отображаться на странице
Index, имя
Homeпредставления, имя контроллера.

Александр Нойкирхен
источник
-1

Если вы используете ASP.NET Core, вы можете изменить принятый ответ на:

<a href="@Url.Action("Index", null, new { area = string.Empty, controller = "User" }, @Context.Request.Scheme)">
     <span>Clients</span>
</a>

замена @Request.Url.Scheme на@Context.Request.Scheme

Нил Шуррер
источник