ASP MVC href zu einem Controller / einer Ansicht

91

Ich habe das:

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

Welches funktioniert gut. Aber wenn ich schon auf dieser Seite oder auf dem Controller /Users/Detailsbin, zB und ich auf diesen Link klicke, leitet er mich weiter /Users/Index.

Wie kann ich hrefunabhängig von meiner aktuellen Position auf der Website den richtigen Pfad finden ?

Zapnologica
quelle
1
Gehen Sie durch diese ..: codeproject.com/Tips/583469/…
Ravi Mehta

Antworten:

175

Es gibt verschiedene Möglichkeiten, dies zu erreichen. Sie können Folgendes tun:

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

oder dieses:

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

In letzter Zeit mache ich folgendes:

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

Das Ergebnis müsste http://localhost/10000(oder mit welchem ​​Port auch immer Sie verwenden) an die URL-Struktur angehängt werden, wie:

http://localhost:10000/Users

Ich hoffe das hilft.

Brendan Vogt
quelle
18

wie wäre es mit

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

Versuche Folgendes:

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

(Gültig für ASP.NET 5 und MVC 6)

John Schroeder
quelle
Es ist nicht gültig für ASP.NET. Möglicherweise gültig für alte ASP-Seiten.
Zanon
1
Nur gültig für ASP.NET 5, dh MVC 6
Ifeanyi Chukwu
6

Hier bezieht sich '~' auf das Stammverzeichnis, in dem Home der Controller und Download_Excel_File die Aktionsmethode ist

 <a href="~/Home/Download_Excel_File" />
Faux
quelle
5

Sie können Folgendes ändern

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

Der zusätzliche Punkt bedeutet, dass Sie sich im selben Controller befinden. Wenn Sie den Controller in einen anderen Controller ändern möchten, können Sie dies schreiben

<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
rksajib
quelle
1
Ausgezeichnete Buddy.Cheers.
Chandan Kumar
1
Schön und einfach! 10x!
Alex123
3

Sie können auch dieses sehr vereinfachte Formular verwenden:

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

Wobei:
Come back to Homeder Text, der auf der Seite angezeigt
Indexwird, der Ansichtsname
Homeder Controller-Name ist

Alexandre Neukirchen
quelle
-1

Wenn Sie ASP.NET Core verwenden, können Sie die akzeptierte Antwort wie folgt anpassen:

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

Ersetzen @Request.Url.Scheme durch@Context.Request.Scheme

Neil Schurrer
quelle