C# ASP.Net MVC5 Html.ActionLink到不同控制器中的索引方法
我有一个ActionLink,单击它时,我希望将id传递到另一个控制器的索引方法中,并将用户带到该控制器索引页面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})| 但是,当我单击
<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)