ASP MVC href到控制器/视图


91

我有这个:

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

哪个工作正常。但是,如果我已经在此页面或控制器上,例如,/Users/Details并且单击此链接,它将重定向到/Users/Index

href无论我当前在网站上的位置如何,如何获取正确的路径?


Answers:


175

有两种方法可以完成此操作。您可以执行以下操作:

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

或这个:

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

最近,我执行以下操作:

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

结果将http://localhost/10000(或使用您正在使用的任何端口)附加到URL结构,例如:

http://localhost:10000/Users

我希望这有帮助。


18

怎么样

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

7

请尝试以下操作:

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

(对于ASP.NET 5和MVC 6有效)


它对ASP.NET无效。可能对旧的ASP页有效。
Zanon

1
仅对ASP.NET 5有效,即MVC 6
Ifeanyi Chukwu

6

这里的“〜”是指根目录,其中Home是控制器,而Download_Excel_File是actionmethod

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

5

您可以使用以下内容进行修改

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

多余的点表示您位于同一控制器中。如果要将控制器更改为其他控制器,则可以编写此代码

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

1
优秀的好友。
Chandan Kumar

1
好,易于!10倍!
Alex123 '19

3

您还可以使用以下非常简化的形式:

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

其中:
Come back to Home是将在页面上显示的文本
Index是视图名称
Home是控制器名称


-1

如果使用ASP.NET Core,则可以将接受的答案调整为:

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

替换@Request.Url.Scheme@Context.Request.Scheme

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.