У мене є такі два методи дії (спрощені для запитань):
[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
(як зазначено вище), вона втрачає помилки моделі.
Я не здивований проблемою, просто цікаво, як ви, хлопці, вирішуєте це?
Звичайно, я міг би просто повернути той самий подання замість перенаправлення, але у мене є логіка в методі "Створити", який заповнює дані подання, які мені довелося б дублювати.
Будь-які пропозиції?