web-dev-qa-db-ja.com

Html.ActionLinkからコントローラーアクションにパラメーターを渡す

このhtmlに問題はありますか?マスターページに「CreateParts」ビューに移動するためのリンクが必要です。コントローラー「PartList」にパラメーターparentPartIdを持つアクション「CreateParts」があります。

<li id="taskAdminPartCreate" runat="server">
                                    <%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 })%></li>

私のコントローラーのアクションは

public ActionResult CreateParts(int parentPartId)
    {
        HSPartList objHSPart = new HSPartList();
        objHSPart.Id = parentPartId;
        return View(objHSPart);
    }

SiteMasterのメニューで[新規パーツの作成]をクリックすると、例外が発生します。これから私を助けてください。

27
Suja Shyam

間違ったオーバーロードを使用しています。このオーバーロードを使用する必要があります

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    Object routeValues,
    Object htmlAttributes
) 

そして、正しいコードは

<%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 }, null)%>

最後に追加のパラメーターがあることに注意してください。他のオーバーロードについては、 LinkExtensions.ActionLink Method にアクセスしてください。ご覧のとおり、使用しようとしているstring, string, string, objectオーバーロードはありません。

63
archil

ActionLinkの誤ったオーバーロードを使用しています。これを試して

<%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 }, null)%>
10
krolik

受け入れられた答えへの追加:

使用する場合

 @Html.ActionLink("LinkName", "ActionName", "ControllerName", new { @id = idValue, @secondParam= = 2 },null)

これにより、リンクの新しいカスタム属性またはスタイルを作成できないアクションリンクが作成されます。

ただし、ActionLink拡張機能の4番目のパラメーターはその問題を解決します。 4番目のパラメーターを使用してカスタマイズします。

 @Html.ActionLink("LinkName", "ActionName", "ControllerName", new { @id = idValue, @secondParam= = 2 }, new { @class = "btn btn-info", @target = "_blank" })