1

コントローラ...

[HttpPost]
public virtual ActionResult PickAColour(ColourModel model, 
                                        string imgbtn, string returnUrl) {

とビュー...

@using (Html.BeginForm(MVC.Home.PickAColour(Model,"",(string)ViewBag.ReturnUrl))) {
    @Html.LabelFor(m => m.SomeProperty)
    @Html.TextBoxFor(m => m.SomeProperty)
    ...
    ...
    <p>Now pick a colour</p>
    <input type="image" name="imgbtn" src="@Links.Content.Images.A_png" value="A"/>
    <input type="image" name="imgbtn" src="@Links.Content.Images.B_png" value="B"/>
    <input type="image" name="imgbtn" src="@Links.Content.Images.C_png" value="C"/>
    <input type="image" name="imgbtn" src="@Links.Content.Images.D_png" value="D"/>
    <input type="image" name="imgbtn" src="@Links.Content.Images.E_png" value="E"/>
    <input type="image" name="imgbtn" src="@Links.Content.Images.F_png" value="F"/>
} 

imgbtn パラメータをメソッドに渡さなかったため、これは機能しません。私はそれを行う正しい方法は何ですか?

4

1 に答える 1

2

正しいメソッドオーバーロードを使用する必要があります。

@Html.BeginForm(MVC.Home.ActionNames.PickAColour, MVC.Home.Name,
                new { imgbtn = "", returnUrl = (string)ViewBag.ReturnUrl },
                FormMethod.Post, null)

複雑なモデルオブジェクトについては、Model上記のようなルート値を使用して渡すことはできません。ASP.NET MVCモデルバインダーが機能できるように、送信ボタンをクリックしたときにこれを送信する必要があります。

于 2012-06-22T11:52:11.867 に答える