@Html.ActionLink() 路由到错误的控制器

@Html.ActionLink() routing to incorrect controller

我正在使用以下 ActionLink 方法:

@Html.ActionLink("Manage User Branch", "mngBranchUser", "branchUser", new { @class = "btn btn-default" })

到 link 到 "branchUser" 控制器中的 "mngBranchUser" 方法,但它实际上是路由到 "Home" 控制器中的 "mngBranchUser" 方法(这是 global 当然是控制器。) URL 作为:http://localhost:57852/Home/mngBranchUser?Length=10。 HTML 由给定的代码行生成的是:

<a class="btn btn-default" href="/Home/mngBranchUser?Length=10">Manage User Branch</a>

当所需的 HTML 是:

<a class="btn btn-default" href="/branchUser/mngBranchUser?Length=10">Manage User Branch</a>

另外,如果我从:

@Html.ActionLink("Manage User Branch", "mngBranchUser", "branchUser", new { @class = "btn btn-default" })

@Html.ActionLink("Manage User Branch", "mngBranchUser", "branchUser" })

我成功地得到了想要的正确输出。但出于格式化原因,我需要 new { @class = "btn btn-default" 部分代码。有人可以请指导。谢谢你。

没有重载方法,因为 ActionLink(HtmlHelper, String, String, String, Object) 因此没有生成正确的 URL。

所以 ActionLink Method (HtmlHelper, String, String, Object) 被应用并且第三个参数被视为 routeValue

routeValues

An object that contains the parameters for a route. The parameters are retrieved through reflection by examining the properties of the object. The object is typically created by using object initializer syntax.

所以它是根据字符串文字 branchUser 的 属性 创建长度的,即 length(10)

您可以使用LinkExtensions.ActionLink Method (HtmlHelper, String, String, String, Object, Object)

@Html.ActionLink("Manage User Branch", "mngBranchUser", "branchUser", null, new { @class = "btn btn-default" })

您使用了 ActionLink() 的错误重载,它需要

@Html.ActionLink("Manage User Branch", "mngBranchUser", "branchUser", null, new { @class = "btn btn-default" })

您的 current overload 正在添加第三个参数作为路由值(并且 "branchUser" 包含 10 个字符,因此它添加 length="10" 因为 length 是唯一的 属性 共 string

试试这个:

<a href="@Url.Action("mngBranchUser","branchUser",new{ })" class="btn btn-default" >Manage User Branch</a>