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?


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.


18

qué tal si

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

7

Intente lo siguiente:

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

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


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" />

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>

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


-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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.