2017-02-23 249 views
0

Когда у меня есть следующий вид:Добавить выбранные флажки только для нескольких объектов контроллера MVC

<input type="checkbox" name="modules" value="1" /> 
<input type="checkbox" name="modules" value="2" /> 
<input type="checkbox" name="modules" value="3" /> 

Это Виль правильно отправить на следующий контроллер MVC:

[HttpPost] 
public ActionResult Submit(string[] modules) 
{ 

} 

Но что, когда выше форма завернута в петлю, например:

@for (int i = 0; i < cart.Events.Count; i++) 
{ 
    <h1>@cart.Events[i].Name</h1> 
    <input type="checkbox" name="modules" value="1" /> 
    <input type="checkbox" name="modules" value="2" /> 
    <input type="checkbox" name="modules" value="3" /> 
} 

С контроллером, который выглядит примерно как t его:

[HttpPost] 
public ActionResult Submit(TestObject modules) 
{ 

} 

public class TestObject 
{ 
    public string[] modules { get; set; } 
} 

Это не будет работать правильно, поскольку MVC не знает, как привязать данные формы к объекту. Я хочу отправить только выбранные значения, потому что не указано, что флажки кол-во модулей всегда одинаковы.

Как это исправить?

+0

Ваша модель нуждается в свойстве say 'bool IsSelected' и свойство для значения, например' int Value' - см. [Этот ответ] (http://stackoverflow.com/questions/29542107/pass-list-of- checkboxes-in-view-and-pull-out-ienumerable/29554416 # 29554416) для примера –

+0

Вы также можете добавить код TestObject – Usman

ответ

0

Все флажки имеют одинаковые имена, вы можете настроить имя: @ («modules» + cart.Events [i] .Name).

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

  • Нет связанных вопросов^_^