Возникли проблемы с несколькими формами в одном представлении.
Предположим, у меня есть следующая модель просмотра:
public class ChangeBankAccountViewModel
{
public IEnumerable<BankInfo> BankInfos { get; set; }
}
public class BankInfo
{
[Required]
public string BankAccount { get; set; }
public long Id { get; set; }
}
В моей модели просмотра я хочу, чтобы все BankInfos отображались друг под другом, внутри отдельных форм для каждого.
Для этого я использую частичное представление _EditBankInfo:
@model BankInfo
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.InvoiceStructureId)
@Html.TextBoxFor(m => m.IBANAccount)
<button type="submit">Update this stuff</button>
}
А также мой реальный взгляд на BankInfo:
foreach(var info in Model.BankInfos)
{
Html.RenderPartial("_EditBankInfo", info);
}
Наконец, вот два моих метода действий:
[HttpGet]
public ActionResult BankInfo()
{
return View(new ChangeBankAccountViewModel{BankInfos = new [] {new BankInfo...});
}
[HttpPost]
public ActionResult BankInfo(BankInfo model)
{
if(ModelState.IsValid)
ModelState.Clear();
return BankInfo();
}
Все это работает хорошо: проверка работает плавно, опубликованная модель распознается и проверяется правильно ... Однако проблема возникает при перезагрузке страницы. Поскольку я использую одну и ту же форму несколько раз, мой ModelState будет применяться несколько раз. Таким образом, при обновлении одной формы при загрузке следующей страницы все они будут иметь опубликованные значения.
Есть ли способ легко предотвратить это?
Я пробовал делать это без частичных представлений, но это немного портит именование (они уникальны, но привязка модели на стороне сервера не распознает их).
Спасибо за любые ответы.