ASP MVC href à un contrôleur / vue

92

J'ai ceci:

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

Ce qui fonctionne bien. Mais si je suis déjà sur cette page ou sur le contrôleur par exemple /Users/Detailset que je clique sur ce lien, il me redirige /Users/Index.

Comment puis-je obtenir le chemin correct hrefquelle que soit ma position actuelle sur le site?

Zapnologica
la source
1
Go Thru This ..: codeproject.com/Tips/583469/…
Ravi Mehta

Réponses:

176

Vous pouvez y parvenir de plusieurs manières. Vous pouvez faire ce qui suit:

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

ou ca:

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

Dernièrement, je fais ce qui suit:

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

Le résultat devrait http://localhost/10000(ou avec le port que vous utilisez) être ajouté à la structure de l'URL comme:

http://localhost:10000/Users

J'espère que ça aide.

Brendan Vogt
la source
18

que diriez-vous

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

Essayez ce qui suit:

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

(Valable pour ASP.NET 5 et MVC 6)

John Schroeder
la source
Ce n'est pas valide pour ASP.NET. Peut-être valable pour les anciennes pages ASP.
Zanon le
1
Uniquement valable pour ASP.NET 5 ie MVC 6
Ifeanyi Chukwu
6

Ici, '~' fait référence au répertoire racine, où Home est le contrôleur et Download_Excel_File est la méthode d'action

 <a href="~/Home/Download_Excel_File" />
faux
la source
5

Vous pouvez modifier avec ce qui suit

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

Le point supplémentaire signifie que vous êtes dans le même contrôleur. Si vous voulez changer le contrôleur en un contrôleur différent, vous pouvez écrire ceci

<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
rksajib
la source
1
Excellent copain.
Chandan Kumar le
1
Sympa et facile! 10x!
Alex123
3

Vous pouvez également utiliser ce formulaire très simplifié:

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

Où:
Come back to Homeest le texte qui apparaîtra sur la page
Indexest le nom de la vue
Homeest le nom du contrôleur

Alexandre Neukirchen
la source
-1

Si vous utilisez ASP.NET Core, vous pouvez ajuster la réponse acceptée à:

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

remplacer @Request.Url.Scheme par@Context.Request.Scheme

Neil Schurrer
la source