У меня сложная модель, содержащая массив.Для рендеринга элементов этого массива я использую EditorFor так:
for (int i = 0; i < Model.Contacts.Phones.Length; i++)
{
@Html.EditorFor(x => x.Contacts.Phones[i])
}
Внутри редактора есть пост-форма.Проблема в том, что привязка успешна только тогда, когда я точно указываю префикс привязки:
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones[0]")]Contact5UsedPhone model)
{ ... }
Так что она работает только для первого из элементов.Какая правильная форма префикса?
Более того, на одном и том же редакторе страниц имеется другое свойство, но поэтому выполняется один и тот же тип модели и одно и то же действие.Можно ли установить более одного префикса привязки?Например,
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones[0], Contacts.AnotherPrefix")]
Contact5UsedPhone model)
{ ... }
Спасибо!
edit - модель:
public class ContactsViewModel
{
public Contact5UsedPhone AddiblePhone {get;set;}
public Contact5UsedPhone[] Phones {get;set;}
...
}
edit - answer: Я нашел решение для этого.Поскольку существует один массив (телефоны) и одна единица (AddiblePhone), я использовал два параметра и просто, если:
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones")]Contact5UsedPhone[] models,
[Bind(Prefix = "Contacts.AddiblePhone")]Contact5UsedPhone model)
{
model = model ?? models[0];
...
}
Остается вопрос - что, если бы AddiblePhones был массивом?Можно ли использовать два префикса для одного параметра или его нужно разделить на два параметра, как я сделал в этом случае?