我有一个ActionLink,当点击它时,我想将一个id传递给另一个控制器的索引方法并将用户带到该控制器索引页
<td>
@Html.ActionLink("View Staff", "Index", "StaffController" , new { id = item.UnitCode }) |
但是,当我点击此链接时,页面简单保持不变,并且网址更改为/Units?Length=15
点击/Staff/Index/theUnitId
有人可以帮助我吗?
答案 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;。
第三,您的问题可能是由RouteConfig类中的路由配置引起的。