如何在同一视图中编辑父对象和子对象集合?有关如何使用mvc3和自动绑定执行此操作的任何好教程吗?
非常感谢!
答案 0 :(得分:0)
关键是在视图中对子集合项使用以下语法:
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是Controller上变量名的名称。每个孩子都需要data.Children.Index,当然你必须增加索引。
希望有所帮助。