[英]ASP.Net MVC5 Html.ActionLink to index method in different controller
我有一個ActionLink,當單擊該鏈接時,我想將ID傳遞到另一個控制器的index方法中,並將用戶帶到該控制器的索引頁面
<td>
@Html.ActionLink("View Staff", "Index", "StaffController" , new { id = item.UnitCode }) |
但是,當我單擊此鏈接時,頁面簡單保持不變,URL更改為/Units?Length=15
我希望單擊該網址時是/Staff/Index/theUnitId
有人能幫我嗎?
我相信您的呼叫與輔助方法的錯誤重載匹配。
按照書面規定,它將匹配以下簽名:
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()
幫助器方法中調整控制器參數的名稱:
@Html.ActionLink("View Staff", "Index", "Staff", ... );
確保正確的重載參數
此外, 您嘗試使用的重載同時需要一個RouteValues
參數(您正在使用)和一個htmlAttributes
參數,該參數可以為null,如下所示:
@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). )
看來您沒有為此方法提供正確的重載。
首先,請使用帶有以下參數的操作鏈接:
@Html.ActionLink("View Staff", "Index", "StaffController" , new { id = item.UnitCode }, null)
不是最后一個參數,哪個htmlArguments應該為null。
第二,也許在您的動作鏈接中代表控制器名稱的第三個參數是錯誤的! 如果是控制器類“ StaffController”的名稱,那么您應該使用參數“ Staff”,而不是“ StaffController”。
第三,您的問題可能是由RouteConfig類中的不同路由配置引起的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.