ASP MVC中href到控制器/视图的转换

105

我有这个:

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

这很好地解决了。但是,如果我已经在此页面或控制器上,例如/Users/Details,并且我单击此链接,则会将我重定向到/Users/Index

如何获取正确的路径在href中,而不管我当前在站点上的位置如何?


1
请查看此链接:http://www.codeproject.com/Tips/583469/MVC-Different-Redirection-Techniques-Razor - Ravi Mehta
8个回答

197

您可以通过以下几种方式实现这一目标:

<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

21

怎么样?

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

13

请尝试以下方法:

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

这是ASP.NET Core 1.0 中引入的Razor页面的新锚标签帮助程序系统的一部分。


这不适用于ASP.NET。可能适用于旧的ASP页面。 - Zanon
2
仅适用于ASP.NET 5,即MVC 6。 - Ifeanyi Chukwu

6
你可以使用以下内容进行修改。
<li><a href="./Index" class="elements"><span>Clients</span></a></li>

额外的点号表示您在同一个控制器中。如果您想将控制器更改为不同的控制器,则可以编写以下内容。
<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>

6
这里的“~”指的是根目录,其中Home是控制器,Download_Excel_File是操作方法。
 <a href="~/Home/Download_Excel_File" />

3
您也可以使用这个非常简化的表单:
@Html.ActionLink("Come back to Home", "Index", "Home")

Where :
Come back to Home 是页面上将出现的文本内容
Index 是视图名称
Home 是控制器名称


0
如果您想要在创建和更新时使用一个模态框,也可以这样做。
C#
onclick="showInPopup('@Url.Action("CreateOrUpdate","Request",null,Context.Request.Scheme)','Create Request')"


onclick="showInPopup('@Url.Action("CreateOrUpdate","Request",new{id = item.id },Context.Request.Scheme)','Edit Request')"

JS

showInPopup = (url, title) => {
    $.ajax({
        type: "GET",
        url: url,
        success: function (res) {
            $("#form-modal .modal-body").html(res);
            $("#form-modal .modal-title").html(title);
            $("#form-modal").modal('show');
        }
    })
}

-1
如果使用ASP.NET Core,您可以将接受的答案调整为:
<a href="@Url.Action("Index", null, new { area = string.Empty, controller = "User" }, @Context.Request.Scheme)">
     <span>Clients</span>
</a>

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接