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

C# ASP.Net MVC5 Html.ActionLink到不同控制器中的索引方法,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个ActionLink,单击它时,我希望将id传递到另一个控制器的索引方法中,并将用户带到该控制器索引页面 <td> @Html.ActionLink("View Staff", "Index", "StaffController" , new { id = item.UnitCode }) | @ActionLink(“查看员工”、“索引”、“StaffController”、新的{id=item.UnitCode})| 但是,当我单击

我有一个ActionLink,单击它时,我希望将id传递到另一个控制器的索引方法中,并将用户带到该控制器索引页面

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

@ActionLink(“查看员工”、“索引”、“StaffController”、新的{id=item.UnitCode})|
但是,当我单击此链接时,页面保持不变,URL变为
/Units?Length=15

我希望URL在单击时为
/Staff/Index/theUnitId


有人能帮我吗?

我相信您的呼叫与helper方法的重载匹配错误

如书面所述,它将与此签名相匹配:

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)

检查您的控制器名称

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

@Html.ActionLink("View Staff", "Index", "Staff", ... );
确保正确的重载参数

此外,还需要
RouteValues
参数(您正在使用)以及
htmlAttributes
参数,该参数可以为空,如下所示:

@Html.ActionLink("View Staff", "Index", "Staff" , new { id =  item.UnitCode }, null) 
我想这对你有帮助。请参阅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).
                )
不是htmlArguments应该为null的最后一个参数

第二,可能在YOUR action link中表示控制器名称的第三个参数是错误的!若控制器类的名称是“StaffController”,那个么YOU应该使用参数“Staff”,而不是“StaffController”


第三,您的问题可能是由于RouteConfig类中不同的路由配置造成的。

在正确的轨道上,但是“控制器”仍然不应该是
控制器名称
参数的一部分,除非您控制器的类名是
StaffControllerController
。啊,是的,愚蠢的我,我还必须更改,“StaffController”改为“staff”。非常感谢!=)是的,谢谢@jmoerdyk。我刚刚复制并粘贴了他所拥有的内容。这里有多个任务。我将编辑答案!而不是将链接作为答案发布,添加一些文字来解释此答案如何帮助OP解决当前问题。谢谢
 @Html.ActionLink("View Staff", "Index", "StaffController" , new { id =  item.UnitCode }, null)