如何将无限数量的复杂对象绑定到viewmodel

时间:2016-09-12 02:41:05

标签: c# asp.net-mvc razor one-to-many model-binding

我正在开发一个"创建"用于在数据库中添加新人员记录的视图。除了显示 Person 的输入字段外,该视图还需要允许用户添加一个或多个地址。例如,这是简化的实体关系:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public IEnumerable<Address> Addresses { get; set; }
}

public class Address
{
    public string Street{ get; set; }
    public string City { get; set; }
    public string State { get; set; }
}

我知道我可以使用Razor视图做这样的事情:

在主视图中Views\Person\Create.cshtml

@model Person
@Html.TextBoxFor(model => model.FirstName)
@Html.TextBoxFor(model => model.LastName)
@Html.EditorFor(model => model.Addresses)

然后在Views\Person\EditorTemplates\Address.cshtml

@model Address
@Html.TextBoxFor(model => model.Street)
@Html.TextBoxFor(model => model.City)
@Html.TextBoxFor(model => model.State)

但是,当您将其填充到填充的地址列表(例如,可能在EditPerson视图中)时,这种方法很有效。但我不确定如何在CREATE情况下使用它,因为地址数量未知。我想我可以使用jquery生成一行新的输入文本框,并仔细命名NAME属性,但这看起来很麻烦。

有人提交过像这样的一对多关系的表单吗?

0 个答案:

没有答案