你能在ASP.net MVC3中使用嵌套视图模型吗?

时间:2011-12-07 15:11:20

标签: asp.net-mvc-3 viewmodel

以下是我正在做的简化版本。

我创建了一个包含公司数据的视图模型。该公司有3个地址。因此,为了聪明,我创建了一个AddressViewModel和一个_address partial。

我遇到的问题是,虽然我可以将AddressViewModel传递给partial,但它渲染地址我现在在HTML中有重复的ID ...所以现在表单上有三个“Line1”输入字段当然不要正确回复。

如何解决此问题。是真正展平ViewModel的唯一方法,并且

MainAddressLine1 MailAddressLine1 BillAddressLine1

在公司视图模型中?而且,如果我这样做,我还能以某种方式使用_address部分吗?

1 个答案:

答案 0 :(得分:7)

使用编辑器模板而不是部分:

@model MainViewModel
@using (Html.BeginForm())
{
    @Html.EditorFor(x => x.MainAddress)
    @Html.EditorFor(x => x.MailAddress)
    @Html.EditorFor(x => x.BillAddress)

    <button type="submit">OK</button>
}

然后在~/Views/Shared/EditorTemplates/AddressViewModel.cshtml内:

@model AddressViewModel
@Html.EditorFor(x => x.Street)
@Html.EditorFor(x => x.ZipCode)
...

现在您不必担心输入字段的名称和ID。它们将被正确处理。