ASP.Net MVC5 Html.ActionLink到不同控制器的索引方法

时间:2016-10-27 17:26:11

标签: c# asp.net asp.net-mvc

我有一个ActionLink,当点击它时,我想将一个id传递给另一个控制器的索引方法并将用户带到该控制器索引页

        <td>
        @Html.ActionLink("View Staff", "Index", "StaffController" , new { id =  item.UnitCode }) |

但是,当我点击此链接时,页面简单保持不变,并且网址更改为/Units?Length=15

点击/Staff/Index/theUnitId

时,我想要该网址

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

我相信您的调用与辅助方法的错误重载相匹配。

如上所述,它将匹配此签名:

public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues, object htmlAttributes)

注意那里没有控制器。

请改为尝试:

@Html.ActionLink("View Staff", "Index", "Staff" , new { id =  item.UnitCode }, null)

哪个应该与控制器匹配正确的签名:

public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)

答案 1 :(得分:1)

检查您的控制器名称

首先,除非您的控制器名为StaffControllerController,否则您可能希望在ActionLink()辅助方法中调整控制器参数的名称:

@Html.ActionLink("View Staff", "Index", "Staff", ... );

确保正确的重载参数

此外,the overload that you are attempting to use还需要RouteValues参数(您正在使用)和htmlAttributes参数,如下所示,该参数可以为null:

@Html.ActionLink("View Staff", "Index", "Staff" , new { id =  item.UnitCode }, null) 

答案 2 :(得分:0)

我认为这answer可以帮到你。请参阅ASP.NET MVC3 +部分,其中说:

  

ASP.NET MVC3 +

     

参数与MVC2的顺序相同,但不再是id值   需要:

Html.ActionLink(article.Title, 
                "Item",   // <-- ActionMethod
                "Login",  // <-- Controller Name.
                new { article.ArticleID }, // <-- Route arguments.
                null  // <-- htmlArguments .. which are none. You need this value
                      //     otherwise you call the WRONG method ...
                      //     (refer to comments, below).
                )

看起来您没有为此方法提供正确的重载。

首先,请使用以下参数的操作链接:

 @Html.ActionLink("View Staff", "Index", "StaffController" , new { id =  item.UnitCode }, null)

不是htmlArguments应为null的最后一个参数。

其次,也许在yuor动作链接中表示控制器名称的第三个参数是错误的!如果是控制器类的名称&#34; StaffController&#34;比yuo应该使用参数&#34; Staff&#34;而不是&#34; StaffController&#34;。

第三,您的问题可能是由R​​outeConfig类中的路由配置引起的。