2011-11-28 6 views
23

このhtmlに問題はありますか?私は "CreateParts"ビューに移動するためのマスターページ内のリンクを持っています。私はアクション 'CreateParts'を持っていて、コントローラ 'PartList'にparentPartIdというパラメータがあります。Html.ActionLinkからコントローラのアクションにパラメータを渡す

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

私はSiteMasterのメニューで「新しいパートを作成」をクリックするとマイコントローラのアクションが

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

のようですが、私は例外を取得。私を助けてください。

+2

質問に例外を追加するといいでしょう:) –

+13

おい、その貧しい里で何をしているのですか?強姦MVCをしないでください:) – rouen

+0

ルーアン、asp.net MVC –

答えて

55

誤った過負荷が使用されています。あなたは

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ではありません。受け入れ答えに

+1

あなたは素晴らしい@archillです。あなたは多くの時間を保存しました、ありがとう –

+0

ありがとう、私はnullがありませんでした。 –

10

不適切なActionLinkのオーバーロードを使用しています。試してください

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

追加:

あなたは、これはあなたがリンクのための新しいカスタム属性やスタイルを作成することはできませんActionLinkのを作成します

@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" }) 
関連する問題