[ImportModelStateFromTempData]
および[ExportModelStateToTempData]
アクション フィルターを使用して PRG パターンを実装しようとしています。このパターンはフラット モデルには最適ですが、子コレクションがある場合は機能しません。私のモデルは次のようになります。
public class QuestionModel
{
public string QuestionText { get; set; }
public ICollection<ChoiceModel> Choices { get; set; }
}
public class ChoiceModel
{
public string ChoiceText { get; set; }
}
私のコントローラーは次のとおりです。
[HttpGet, ImportModelStateFromTempData]
public ActionResult Create()
{
return View();
}
[HttpPost, ExportModelStateToTempData]
public ActionResult Create(QuestionModel model)
{
if(ModelState.IsValid)
{
// not getting here
}
return RedirectToAction("Create");
}
私のビューでは、ユーザーが選択肢に新しい項目を追加できるようになっており、選択肢は一意でなければならないという検証があります。ModelState が有効でない場合、ModelState を TempData にパッケージ化し、HttpGet アクションにリダイレクトします。
この時点で、すべての子モデルの値は ModelState にありますが、モデルをビューに渡すときに再構築されないため、ビューには追加された子が 0 であることが示されます。
ModelState をモデルとマージする方法はありますか、またはこのパターンを子オブジェクトで使用できませんか?