ASP MVC href do kontrolera / widoku

95

Mam to:

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

Co działa dobrze. Ale jeśli jestem już na tej stronie lub na kontrolerze np. /Users/DetailsI kliknę w ten link, na który mnie przekierowuje /Users/Index.

Jak mogę uzyskać prawidłową ścieżkę hrefniezależnie od mojej aktualnej pozycji w serwisie?

Zapnologica
źródło
1
Przejdź przez to ..: codeproject.com/Tips/583469/…
Ravi Mehta

Odpowiedzi:

180

Można to osiągnąć na kilka sposobów. Możesz wykonać następujące czynności:

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

albo to:

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

Ostatnio wykonuję następujące czynności:

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

Wynik powinien http://localhost/10000zostać dołączony (lub z dowolnym portem, którego używasz) do struktury adresu URL, na przykład:

http://localhost:10000/Users

Mam nadzieję, że to pomoże.

Brendan Vogt
źródło
18

Co powiesz na

<li>
<a href="@Url.Action("Index", "Users")" class="elements"><span>Clients</span></a>
</li>
FosterZ
źródło
8

Spróbuj wykonać następujące czynności:

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

(Obowiązuje dla ASP.NET 5 i MVC 6)

John Schroeder
źródło
Nie dotyczy ASP.NET. Może dotyczy starych stron ASP.
Zanon
2
Ważne tylko dla ASP.NET 5 tj. MVC 6
Ifeanyi Chukwu
6

Tutaj „~” odnosi się do katalogu głównego, gdzie Home to kontroler, a Download_Excel_File to metoda akcji

 <a href="~/Home/Download_Excel_File" />
fałszywe
źródło
5

Możesz modyfikować w następujący sposób

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

Dodatkowa kropka oznacza, że ​​jesteś w tym samym kontrolerze. Jeśli chcesz zmienić kontroler na inny kontroler, możesz to napisać

<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
rksajib
źródło
1
Doskonały kumpel. Pozdrawiam.
Chandan Kumar
1
Miło i łatwo! 10x!
Alex123
3

Możesz także skorzystać z tego bardzo uproszczonego formularza:

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

Gdzie:
Come back to Hometo tekst, który pojawi się na stronie,
Indexto nazwa widoku
Hometo nazwa kontrolera

Alexandre Neukirchen
źródło
-1

Jeśli używasz ASP.NET Core, możesz dostosować zaakceptowaną odpowiedź do:

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

zastępując @Request.Url.Scheme z@Context.Request.Scheme

Neil Schurrer
źródło