ฉันมีสองวิธีการดำเนินการต่อไปนี้ (ทำให้ง่ายขึ้นสำหรับคำถาม):
[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
(ตามด้านบน) จะสูญเสียข้อผิดพลาดของโมเดล
ฉันไม่แปลกใจกับปัญหานี้แค่สงสัยว่าพวกคุณจัดการเรื่องนี้อย่างไร?
แน่นอนว่าฉันสามารถคืนมุมมองเดียวกันแทนการเปลี่ยนเส้นทางได้ แต่ฉันมีตรรกะในวิธีการ "สร้าง" ซึ่งจะเติมข้อมูลมุมมองซึ่งฉันต้องทำซ้ำ
ข้อเสนอแนะใด ๆ ?