ASP MVC href a un controlador / vista

93

Tengo esto:

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

Que funciona bien. Pero si ya estoy en esta página o en el controlador, por ejemplo, /Users/Detailsy hago clic en este enlace, me redirige a /Users/Index.

¿Cómo puedo obtener la ruta correcta hrefindependientemente de mi posición actual en el sitio?

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

Respuestas:

177

Hay un par de formas de lograrlo. Puede hacer lo siguiente:

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

o esto:

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

Últimamente hago lo siguiente:

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

El resultado tendría http://localhost/10000(o con cualquier puerto que esté usando) para agregarse a la estructura de la URL como:

http://localhost:10000/Users

Espero que esto ayude.

Brendan Vogt
fuente
18

qué tal si

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

Intente lo siguiente:

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

(Válido para ASP.NET 5 y MVC 6)

John Schroeder
fuente
No es válido para ASP.NET. Quizás válido para páginas ASP antiguas.
Zanon
1
Solo válido para ASP.NET 5, es decir, MVC 6
Ifeanyi Chukwu
6

Aquí '~' se refiere al directorio raíz, donde Inicio es el controlador y Download_Excel_File es el método de acción

 <a href="~/Home/Download_Excel_File" />
falso
fuente
5

Puede modificar con lo siguiente

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

El punto extra significa que estás en el mismo controlador. Si desea cambiar el controlador a un controlador diferente, puede escribir esto

<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
rksajib
fuente
1
Excelente amigo Saludos.
Chandan Kumar
1
¡Bonito y fácil! 10x!
Alex123
3

También puede utilizar este formulario muy simplificado:

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

Donde:
Come back to Homees el texto que aparecerá en la página
Indexes el nombre de la vista
Homees el nombre del controlador

Alexandre Neukirchen
fuente
-1

Si usa ASP.NET Core, puede ajustar la respuesta aceptada a:

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

reemplazando @Request.Url.Scheme con@Context.Request.Scheme

Neil Schurrer
fuente