Опубликовать / перенаправить / получить шаблон в ASP.NET MVC - PullRequest
15 голосов
/ 23 января 2010

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

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

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

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

Какой, по вашему мнению, самый чистый, самый идеальный метод для достижения этой цели?

Ответы [ 2 ]

12 голосов
/ 23 января 2010

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

4 голосов
/ 23 января 2010

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

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