Подтвердить что ты не робот

Post/Redirect/Получить шаблон в ASP.NET MVC

Какова наилучшая практика для реализации шаблона Post/Redirect/Get в ASP.NET MVC? В частности, каков наилучший способ сделать это, когда вы хотите перенаправить обратно на начальное действие/контроллер?

Вот как я сейчас это делаю:

  • Отобразить форму для пользователя.
    • В форме используйте <%= Html.Hidden("returnUrl") %>
    • В действии используйте ViewData["returnUrl"] = Request.Url;
  • Пользователь отправляет форму через POST
  • Перенаправление на привязку модели returnUrl, если не null. В противном случае перенаправляйтесь на домашнюю страницу.

Выполняйте эту работу, но похоже, что это приведет к большому дублированию. Я также понял, что я мог бы перенаправить на Request.UrlReferrer...

Что вы думаете о самом чистом, идеальном методе достижения этого?

4b9b3361

Ответ 1

То, как вы это делаете, прекрасно, но похоже, что вы можете немного переусердствовать. Ваши действия POST принимают сообщения из более чем одной формы? Если нет, зачем беспокоиться о скрытом поле формы? Вы можете уйти с простым RedirectToAction("MyAction")

Ответ 2

Как правило, действие, которое обрабатывает POST, знает, где ему нужно перенаправить при успешном представлении. Поэтому каждое действие, реализующее RGP, может просто вызвать RedirectToAction(string).

public ViewResult Edit(string email)
{
  // save the email
  return RedirectToAction("Edit");
}