ASP MVC href a un controller / vista


91

Ho questo:

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

Che funziona bene. Ma se sono già su questa pagina o sul controller, ad esempio /Users/Detailse faccio clic su questo collegamento, mi reindirizza /Users/Index.

Come posso ottenere il percorso corretto hrefindipendentemente dalla mia posizione attuale sul sito?


Risposte:


175

Ci sono un paio di modi in cui puoi farlo. Puoi fare quanto segue:

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

o questo:

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

Ultimamente faccio quanto segue:

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

Il risultato dovrebbe http://localhost/10000(o con qualunque porta tu stia utilizzando) essere aggiunto alla struttura dell'URL come:

http://localhost:10000/Users

Spero che aiuti.


18

che ne dite di

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

7

Prova quanto segue:

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

(Valido per ASP.NET 5 e MVC 6)


Non è valido per ASP.NET. Forse valido per vecchie pagine ASP.
Zanon,

1
Valido solo per ASP.NET 5 ie MVC 6
Ifeanyi Chukwu

6

Qui '~' si riferisce alla directory principale, dove Home è il controller e Download_Excel_File è il metodo di azione

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

5

È possibile modificare con quanto segue

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

Il punto in più significa che sei nello stesso controller. Se vuoi cambiare il controller con un controller diverso, puoi scrivere questo

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

1
Eccellente amico.
Chandan Kumar

1
Bello e facile! 10x!
Alex123

3

Puoi anche usare questo modulo molto semplificato:

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

Dove:
Come back to Homeè il testo che apparirà sulla pagina
Indexè il nome della vista
Homeè il nome del controller


-1

Se si utilizza ASP.NET Core, è possibile modificare la risposta accettata a:

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

sostituendo @Request.Url.Scheme con@Context.Request.Scheme

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.