Tôi đang cố triển khai mẫu PRG bằng cách sử dụng các bộ lọc hành động [ImportModelStateFromTempData]
và [ExportModelStateToTempData]
. Mô hình này hoạt động tốt cho các mô hình phẳng nhưng tôi không thể làm cho nó hoạt động khi tôi có một bộ sưu tập con. Mô hình của tôi trông như thế này:Mẫu PRC MVC với trẻ em
public class QuestionModel
{
public string QuestionText { get; set; }
public ICollection<ChoiceModel> Choices { get; set; }
}
public class ChoiceModel
{
public string ChoiceText { get; set; }
}
điều khiển của tôi là như sau:
[HttpGet, ImportModelStateFromTempData]
public ActionResult Create()
{
return View();
}
[HttpPost, ExportModelStateToTempData]
public ActionResult Create(QuestionModel model)
{
if(ModelState.IsValid)
{
// not getting here
}
return RedirectToAction("Create");
}
Quan điểm của tôi cho phép người dùng thêm các mục mới vào sự lựa chọn, và tôi có một xác nhận rằng sự lựa chọn phải là duy nhất. Khi ModelState của tôi không hợp lệ, nó sẽ đóng gói ModelState vào TempData và chuyển hướng đến hành động HttpGet. Tại thời điểm này tất cả các giá trị mô hình con của tôi là trong ModelState, nhưng nó không tái tạo chúng khi nó chuyển mô hình đến khung nhìn, do đó quan điểm của tôi cho thấy rằng có thêm 0 trẻ em.
Có cách nào bằng cách nào đó hợp nhất ModelState với Mô hình hoặc tôi không thể sử dụng mẫu này với các đối tượng con không?
Đó là những gì tôi đang làm và nó không hoạt động với bộ sưu tập trẻ em. – Dismissile