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?


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.


18

e quanto a

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

7

Experimente o seguinte:

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

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


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

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>

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


-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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.