1

Контроллер ...T4MVC Html.BeginForm с множественным входом представляет

[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 параметр в метод. Я не знаю, как правильно это сделать?

ответ

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 мог выполнять свою работу.

+0

Я провел тест, используя свой путь, он работает, но все равно строка imgbtn = null, когда debug вводит метод PickAColour. Похоже на тот же результат, что и мой первоначальный метод вызова? – Tom

+0

Также, кстати, объект Model действительно хорошо работает в любом случае, returnUrl также хорош. Только параметр imgbtn, похоже, не подключается. – Tom

+0

Попробуйте изменить имя этого параметра, чтобы сделать тест ... Дайте id = "imgbtn" для ввода и повторите попытку. –

Смежные вопросы