Ich versuche, das PRG-Muster mit den Aktionsfilter [ImportModelStateFromTempData]
und [ExportModelStateToTempData]
zu implementieren. Dieses Muster funktioniert gut für flache Modelle, aber ich kann es nicht funktionieren, wenn ich eine Kinderkollektion habe. Mein Modell sieht wie folgt aus:MVC PRG Muster mit Kindern
public class QuestionModel
{
public string QuestionText { get; set; }
public ICollection<ChoiceModel> Choices { get; set; }
}
public class ChoiceModel
{
public string ChoiceText { get; set; }
}
Mein Controller ist wie folgt:
[HttpGet, ImportModelStateFromTempData]
public ActionResult Create()
{
return View();
}
[HttpPost, ExportModelStateToTempData]
public ActionResult Create(QuestionModel model)
{
if(ModelState.IsValid)
{
// not getting here
}
return RedirectToAction("Create");
}
Meine Ansicht ermöglicht es dem Benutzer neue Elemente in die Auswahl hinzuzufügen, und ich habe eine Bestätigung dafür, dass Entscheidungen eindeutig sein muss. Wenn mein ModelState nicht gültig ist, wird der ModelState in TempData verpackt und an die Aktion HttpGet weitergeleitet.
An diesem Punkt befinden sich alle Werte meines untergeordneten Modells in ModelState, aber es wird nicht rekonstruiert, wenn es das Modell an die Ansicht übergibt. Daher zeigt meine Ansicht, dass 0 untergeordnete Elemente hinzugefügt wurden.
Gibt es eine Möglichkeit, den ModelState irgendwie mit dem Modell zusammenzuführen, oder kann ich dieses Muster nicht mit untergeordneten Objekten verwenden?
Das ist, was ich tue und es funktioniert nicht mit Kind Sammlungen. – Dismissile