@ Html.ActionLink()路由到不正确的控制器

时间:2017-01-31 08:38:37

标签: css asp.net-mvc asp.net-mvc-4 asp.net-mvc-3

我正在使用以下ActionLink方法:

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

链接到"mngBranchUser"控制器中的"branchUser"方法,但它实际上路由到"mngBranchUser"控制器中的"Home"方法(全局控制器当然。) 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"部分代码。有人可以指导。谢谢。

3 个答案:

答案 0 :(得分:3)

你使用ActionLink()的错误重载,它必须是

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

您的current overload正在添加第3个参数作为路由值(&#34; branchUser&#34;包含10个字符,因此其添加length="10"因为length是唯一属性string

答案 1 :(得分:2)

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

因此ActionLink Method (HtmlHelper, String, String, Object)被应用,第三个参数被视为routeValue

  

routeValues

     
    

包含路径参数的对象。通过检查对象的属性,通过反射检索参数。该对象通常使用对象初始化器语法创建。

  

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

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

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

答案 2 :(得分:0)

试试这个:

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