@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>
我正在使用以下 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>