以下是我正在做的简化版本。
我创建了一个包含公司数据的视图模型。该公司有3个地址。因此,为了聪明,我创建了一个AddressViewModel和一个_address partial。
我遇到的问题是,虽然我可以将AddressViewModel传递给partial,但它渲染地址我现在在HTML中有重复的ID ...所以现在表单上有三个“Line1”输入字段当然不要正确回复。
如何解决此问题。是真正展平ViewModel的唯一方法,并且
MainAddressLine1 MailAddressLine1 BillAddressLine1
在公司视图模型中?而且,如果我这样做,我还能以某种方式使用_address部分吗?
答案 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。它们将被正确处理。