Post/Redirect/Получить шаблон в ASP.NET MVC
Какова наилучшая практика для реализации шаблона Post/Redirect/Get в ASP.NET MVC? В частности, каков наилучший способ сделать это, когда вы хотите перенаправить обратно на начальное действие/контроллер?
Вот как я сейчас это делаю:
- Отобразить форму для пользователя.
- В форме используйте
<%= Html.Hidden("returnUrl") %>
- В действии используйте
ViewData["returnUrl"] = Request.Url;
- Пользователь отправляет форму через POST
- Перенаправление на привязку модели
returnUrl
, если не null
. В противном случае перенаправляйтесь на домашнюю страницу.
Выполняйте эту работу, но похоже, что это приведет к большому дублированию. Я также понял, что я мог бы перенаправить на Request.UrlReferrer
...
Что вы думаете о самом чистом, идеальном методе достижения этого?
Ответы
Ответ 1
То, как вы это делаете, прекрасно, но похоже, что вы можете немного переусердствовать. Ваши действия POST принимают сообщения из более чем одной формы? Если нет, зачем беспокоиться о скрытом поле формы? Вы можете уйти с простым RedirectToAction("MyAction")
Ответ 2
Как правило, действие, которое обрабатывает POST, знает, где ему нужно перенаправить при успешном представлении. Поэтому каждое действие, реализующее RGP, может просто вызвать RedirectToAction(string)
.
public ViewResult Edit(string email)
{
// save the email
return RedirectToAction("Edit");
}