ASP MVC href до контролера / перегляду


93

У мене є таке:

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

Що працює чудово. Але якщо я вже перебуваю на цій сторінці або на контролері, наприклад, /Users/Detailsі я натискаю це посилання, воно перенаправляє мене /Users/Index.

Як я можу отримати правильний шлях hrefнезалежно від моєї поточної позиції на сайті?


Відповіді:


177

Є кілька способів досягти цього. Ви можете зробити наступне:

<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

Сподіваюся, це допоможе.


18

як щодо

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

7

Спробуйте наступне:

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

(Діє для ASP.NET 5 та MVC 6)


Він не діє для ASP.NET. Можливо, дійсно для старих сторінок ASP.
Zanon

1
Діє лише для 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
Відмінний приятель.
Chandan Kumar

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.