web-dev-qa-db-fra.com

ASP MVC href à un contrôleur/vue

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/Details et je clique sur ce lien, il me redirige vers /Users/Index.

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

74
Zapnologica

Vous pouvez y parvenir de plusieurs façons. 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 aurait http://localhost/10000 (ou avec le port que vous utilisez) à ajouter à la structure de l'URL comme:

http://localhost:10000/Users

J'espère que ça aide.

149
Brendan Vogt

que diriez-vous

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

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 pour un autre contrôleur, vous pouvez écrire ceci

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

Essayez ce qui suit:

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

(Valable pour ASP.NET 5 et MVC 6)

4
John Schroeder

Ici '~' fait référence au répertoire racine, où Home est contrôleur et Download_Excel_File est actionmethod

 <a href="~/Home/Download_Excel_File" />
4
faux

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

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

Où : 
Come back to Home est le texte qui apparaîtra sur la page 
Index est le nom de la vue 
Homeis le nom du contrôleur

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>

en remplaçant @Request.Url.Scheme.__ par @Context.Request.Scheme

0
Neil Schurrer