ModelBinding выполняется с использованием имени.Для любой коллекции, которую вы хотите связать, она должна иметь следующий формат:
project.property1
project.property2
и для коллекции мальчиков
project.Boys[0].property1
project.Boys[0].property2
project.Boys[1].property1
project.Boys[1].property2
Если вы используете форму, вы можете просто правильноустановите имена входов и используя jquery:
//inside the ajax definition
data: $('#formID').serialize(),
РЕДАКТИРОВАТЬ: если у мальчиков нет свойств, тогда имя должно быть:
project.Boys[0]
project.Boys[1]
project.Boys[2]
ИмеетВы пытались связать со вторым параметром, как этот?
public ActionResult Create(ProjectModel project, string[] Boys)
Я не использовал ArratList
, потому что я сделал какой-то тест, и он не связывается вообще, я предпочитаю использовать обычное объявление массива.
Другая вещь, которую вы можете попробовать, - это проверить, FormCollection
public ActionResult Create(FormCollection f)
поставить точку останова только в начале и проверить значения, если имена внутри не соответствуют формату проекта.Мальчики, которые никогда не будут связываться.
EDIT2 : Если вы хотите привязать несколько массивов, просто добавьте определение коллекции в модель:
public class ProjectModel
{
public IEnumerable<string[]> Boys { get; set; }
}
иимена должны быть: для первого массива:
project.Boys[0]
project.Boys[0]
для второго:
project.Boys[1]
project.Boys[1]
.,.
Но для того, чтобы заархивировать это, определение Boys в Javascript также должно быть коллекцией собраний, и я не уверен, как определить это в js.
PD: если вы помещаете значение вручную в массивы, и эти значения поступают из входных данных, как вы указали здесь Boys.Push($('#tex1').val())
, тогда вы сможете сериализовать эти входы и избавить вас от многих неприятностей = D.то есть: для симуляции вашей ситуации это будет что-то вроде ...
<% using (Html.BeginForm())
{ %>
<% var i1 = 5; %>
<% var i2 = 5; %>
<% for(var i=0; i < i1; i++)
{ %>
<% for (var ix = 0; ix < i2; ix++)
{%>
<input name="boys[<%=i %>]" value="VALUE_HERE"/>
<%} %>
<%} %>
<input type="submit" value="sumit" />
<%} %>
и выполнение data: $('#formID').serialize()
даст тот же результат, что и создание объекта project
js, а затем выполнение JSON.stringify(project)
.