Saya memiliki dua metode tindakan berikut (disederhanakan untuk pertanyaan):
[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"]});
}
}
Jadi, jika validasi lolos, saya redirect ke halaman lain (konfirmasi).
Jika terjadi kesalahan, saya perlu menampilkan halaman yang sama dengan kesalahan tersebut.
Jika saya lakukan return View()
, kesalahan ditampilkan, tetapi jika saya lakukan return RedirectToAction
(seperti di atas), itu kehilangan kesalahan Model.
Saya tidak terkejut dengan masalah ini, hanya bertanya-tanya bagaimana kalian menangani ini?
Tentu saja saya bisa mengembalikan Tampilan yang sama daripada pengalihan, tetapi saya memiliki logika dalam metode "Buat" yang mengisi data tampilan, yang harus saya duplikat.
Ada saran?