我有一个包含数组的复杂模型。为了渲染这个数组的项目,我使用 EditorFor 像这样:
for (int i = 0; i < Model.Contacts.Phones.Length; i++)
{
@Html.EditorFor(x => x.Contacts.Phones[i])
}
在编辑器里面有一个post-form。问题是,只有当我准确指定绑定前缀时,绑定才会成功:
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones[0]")]Contact5UsedPhone model)
{ ... }
所以它只适用于第一个元素。前缀的正确形式是什么?
更重要的是,在同一页面编辑器上也有不同属性的 - 但因此执行相同类型的模型和相同的操作。是否可以设置多个绑定前缀?例如
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones[0], Contacts.AnotherPrefix")]
Contact5UsedPhone model)
{ ... }
谢谢!
编辑 - 型号:
public class ContactsViewModel
{
public Contact5UsedPhone AddiblePhone {get;set;}
public Contact5UsedPhone[] Phones {get;set;}
...
}
编辑 - 答案:我找到了解决方案。由于有一个数组(Phones)和一个单一实体(AddiblePhone),我使用了两个参数,如果:
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones")]Contact5UsedPhone[] models,
[Bind(Prefix = "Contacts.AddiblePhone")]Contact5UsedPhone model)
{
model = model ?? models[0];
...
}
问题仍然存在——如果有 AddiblePhones 作为数组呢?是否可以为一个参数使用两个前缀,还是必须像我在这种情况下那样将其分为两个参数?