Выполнение некоторых проблем с несколькими формами на одном представлении.
Предположим, что у меня есть следующая модель просмотра:
public class ChangeBankAccountViewModel
{
public IEnumerable<BankInfo> BankInfos { get; set; }
}
public class BankInfo
{
[Required]
public string BankAccount { get; set; }
public long Id { get; set; }
}
В моей модели просмотра я хочу, чтобы все BankInfos отображались под eachother, внутри отдельных форм для каждого.
Чтобы достичь этого, я использую частичный вид _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);
}
Наконец, вот мои 2 метода действий:
[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();
}
Все это работает hunky dory: валидация работает гладко, размещенная модель распознается и проверяется правильно... Однако, когда перезагрузка страницы возникает, когда возникает проблема. Поскольку я использую одну и ту же форму несколько раз, мой ModelState будет применяться несколько раз. Поэтому при выполнении обновления в одной форме загрузка следующей страницы будет иметь все опубликованные значения.
Есть ли способ легко предотвратить это?
Я пробовал делать это без частичных представлений, но это немного сокращает наименования (они уникальны, но привязка к серверным файлам не распознает их).
Спасибо за любые ответы.