Probleme mit mehreren Formularen in einer einzigen Ansicht.Mehrere Formulare in der MVC-Ansicht: ModelState für alle Formulare
Angenommen, ich habe folgendes Viewmodel:
public class ChangeBankAccountViewModel
{
public IEnumerable<BankInfo> BankInfos { get; set; }
}
public class BankInfo
{
[Required]
public string BankAccount { get; set; }
public long Id { get; set; }
}
In meinem Viewmodel, möchte ich alle BankInfos unter ihnen angezeigt werden, innerhalb getrennter Formen für jeden.
Um dies zu erreichen, ich bin eine Teilansicht _EditBankInfo mit:
@model BankInfo
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.InvoiceStructureId)
@Html.TextBoxFor(m => m.IBANAccount)
<button type="submit">Update this stuff</button>
}
sowie meine aktuelle Ansicht BankInfo:
foreach(var info in Model.BankInfos)
{
Html.RenderPartial("_EditBankInfo", info);
}
Last, hier sind meine 2 Action Methoden:
All dies funktioniert hunky dory: Validierung funktioniert reibungslos, Posted-Modell wird erkannt und validiert richtig ... Allerdings, wenn die Seite neu geladen wird, tritt das Problem auf. Da ich dasselbe Formular mehrmals verwende, wird mein ModelState mehrmals angewendet. Wenn Sie also ein Update auf einem Formular durchführen, werden auf der nächsten Seite alle gebuchten Werte angezeigt.
Gibt es eine Möglichkeit, dies einfach zu verhindern?
Ich habe versucht, es ohne die Teilansichten zu tun, aber das vermasselt die Benennung ein wenig (sie sind einzigartig, aber serverseitige Modelbinding wird sie nicht erkennen).
Danke für alle Antworten.
Könnten Sie die Controller-Aktion zeigen, an der das Formular gesendet wird? Ich interessiere mich besonders für das Modell, das es als Parameter nimmt, und das Modell, das es an die Ansicht weitergibt. –
@DarinDimitrov, fügte sie hinzu. Wissen Sie, dies ist ein vereinfachtes Beispiel, aber die grundlegende Konfiguration sollte da sein. Außerdem würde ich hier wahrscheinlich ein PRG-Szenario verwenden. – Kippie