簡體   English   中英

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

[英]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”。

第三,您的問題可能是由R​​outeConfig類中的不同路由配置引起的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM