具有多个输入提交的T4MVC Html.BeginForm

时间:2012-06-22 11:47:11

标签: asp.net-mvc model-binding t4mvc html.beginform input-button-image

控制器......

[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参数传递给方法。我不知道这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您必须使用正确的方法重载:

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

对于复杂模型对象Model,您无法使用上述路径值传递它。单击提交按钮时应提交此项,以便ASP.NET MVC Model Binder可以完成其工作。