Ключ должен был бы использовать следующий синтаксис в вашем представлении для ваших дочерних элементов коллекции:
data.Children.Index and data.Children[index].Properties
Вот простой пример:
Модель:
public class Parent
{
public int FieldA { get; set; }
public string FieldB { get; set; }
}
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ParentChildViewModel
{
public Parent Master { get; set; }
public List<Child> Children { get; set; }
}
Контроллер:
public ActionResult Edit()
{
return View(new ParentChildViewModel());
}
[HttpPost]
public ActionResult Edit(ParentChildViewModel data)
{
// Save your objects
}
Вид:
@model ParentChildViewModel
...
@using(Html.BeginForm())
{
@Html.TextBoxFor(x => x.Master.FieldA);
@{ int index = 0; }
@foreach(var c in Model.Children)
{
@Html.Hidden("data.Children.Index", index);
@Html.TextBox("data.Children[" + index + "].Name")
@{ index++; }
}
}
На вашем контроллере вы получите в свойствах .Children изменения, внесенные в свойства Name и в свойствах .Master.сделано для родителей.Единственный прием - это синтаксис data.Children , где data - это имя имени переменной вашего контроллера.Data.Children.Index требуется для каждого ребенка, и, конечно, вы должны увеличивать индекс.
Надеюсь, это поможет.