ASP MVC href para um controlador / visualização

91

Eu tenho isto:

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

O que funciona bem. Mas se eu já estiver nesta página ou no controlador, por exemplo, /Users/Detailse clicar neste link, ele me redireciona para /Users/Index.

Como posso obter o caminho correto hrefindependentemente da minha posição atual no site?

Zapnologica
fonte
1
Vá até lá ..: codeproject.com/Tips/583469/…
Ravi Mehta de

Respostas:

175

Existem algumas maneiras de fazer isso. Você pode fazer o seguinte:

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

ou isto:

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

Ultimamente eu faço o seguinte:

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

O resultado teria http://localhost/10000(ou com qualquer porta que você esteja usando) para ser anexado à estrutura do URL como:

http://localhost:10000/Users

Eu espero que isso ajude.

Brendan Vogt
fonte
18

e quanto a

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

Experimente o seguinte:

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

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

John Schroeder
fonte
Não é válido para ASP.NET. Pode ser válido para páginas ASP antigas.
Zanon
1
Válido apenas para ASP.NET 5, ou seja, MVC 6
Ifeanyi Chukwu
6

Aqui, '~' se refere ao diretório raiz, onde Home é o controlador e Download_Excel_File é o método de ação

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

Você pode modificar com o seguinte

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

O ponto extra significa que você está no mesmo controlador. Se você quiser mudar o controlador para um controlador diferente, você pode escrever isto

<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
rksajib
fonte
1
Excelente Buddy.Cheers.
Chandan Kumar
1
Legal e fácil! 10x!
Alex123
3

Você também pode usar este formulário muito simplificado:

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

Onde:
Come back to Homeé o texto que aparecerá na página
Indexé o nome da visualização
Homeé o nome do controlador

Alexandre Neukirchen
fonte
-1

Se estiver usando ASP.NET Core, você pode ajustar a resposta aceita para:

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

substituindo @Request.Url.Scheme por@Context.Request.Scheme

Neil Schurrer
fonte