Próbuję zaimplementować wzorzec PRG przy użyciu filtrów akcji [ImportModelStateFromTempData]
i [ExportModelStateToTempData]
. Ten wzór sprawdza się doskonale w płaskich modelach, ale nie mogę go uruchomić, gdy mam kolekcję dziecięcą. Mój model wygląda następująco:Wzór PRG MVC z dziećmi
public class QuestionModel
{
public string QuestionText { get; set; }
public ICollection<ChoiceModel> Choices { get; set; }
}
public class ChoiceModel
{
public string ChoiceText { get; set; }
}
mój regulator jest następujący:
[HttpGet, ImportModelStateFromTempData]
public ActionResult Create()
{
return View();
}
[HttpPost, ExportModelStateToTempData]
public ActionResult Create(QuestionModel model)
{
if(ModelState.IsValid)
{
// not getting here
}
return RedirectToAction("Create");
}
mój widok pozwala na dodanie nowych elementów do wyborów, i mam walidacji, że wybory muszą być unikalne. Kiedy moje ModelState nie jest prawidłowe, zapakuje ModelState w TempData i przekieruje do akcji HttpGet.
W tym momencie wszystkie moje wartości modelu podrzędnego są w ModelState, ale nie rekonstruuje je, gdy przechodzi model do widoku, dlatego mój widok pokazuje, że dodano 0 dzieci.
Czy istnieje sposób, aby jakoś połączyć modelState z modelem lub nie mogę użyć tego wzorca do obiektów podrzędnych?
To właśnie robię i nie działa z kolekcjami dzieci. – Dismissile