在同一视图中编辑父级和子级

时间:2011-05-25 10:27:38

标签: c# asp.net-mvc-3

如何在同一视图中编辑父对象和子对象集合?有关如何使用mvc3和自动绑定执行此操作的任何好教程吗?

非常感谢!

1 个答案:

答案 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,当然你必须增加索引。

希望有所帮助。