次の2つのアクションメソッドがあります(質問では簡略化しています)。
[HttpGet]
public ActionResult Create(string uniqueUri)
{
// get some stuff based on uniqueuri, set in ViewData.
return View();
}
[HttpPost]
public ActionResult Create(Review review)
{
// validate review
if (validatedOk)
{
return RedirectToAction("Details", new { postId = review.PostId});
}
else
{
ModelState.AddModelError("ReviewErrors", "some error occured");
return RedirectToAction("Create", new { uniqueUri = Request.RequestContext.RouteData.Values["uniqueUri"]});
}
}
したがって、検証に合格すると、別のページにリダイレクトされます(確認)。
エラーが発生した場合、エラーと同じページを表示する必要があります。
実行return View()
するとエラーが表示されますが、return RedirectToAction
(上記のように)実行すると、モデルエラーが失われます。
私はこの問題に驚いていない、あなたたちがこれをどのように処理するのかと思っているだけですか?
もちろん、リダイレクトの代わりに同じビューを返すだけでもかまいませんが、「Create」メソッドにロジックがあり、ビューデータを入力します。これを複製する必要があります。
助言がありますか?