Tôi có hai phương pháp hành động sau (đơn giản hóa cho câu hỏi):
[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"]});
}
}
Vì vậy, nếu quá trình xác nhận vượt qua, tôi sẽ chuyển hướng đến một trang khác (xác nhận).
Nếu xảy ra lỗi, tôi cần hiển thị cùng một trang có lỗi.
Nếu tôi làm vậy return View()
, lỗi sẽ được hiển thị, nhưng nếu tôi làm như vậy return RedirectToAction
(như trên), nó sẽ mất các lỗi Model.
Tôi không ngạc nhiên về vấn đề này, chỉ tự hỏi làm thế nào các bạn xử lý điều này?
Tất nhiên, tôi có thể chỉ trả lại cùng một Chế độ xem thay vì chuyển hướng, nhưng tôi có logic trong phương thức "Tạo" điền dữ liệu chế độ xem, mà tôi sẽ phải sao chép.
Bất kỳ đề xuất?