在ASP.NET MVC中发布/重定向/获取模式

时间:2010-01-22 22:04:33

标签: c# asp.net-mvc post-redirect-get

在ASP.NET MVC中实现Post / Redirect / Get模式的最佳实践是什么?特别是,当您想要重定向回初始操作/控制器时,最好的方法是什么?

以下是我目前正在做的事情:

  1. 向用户显示表单。
    • 在表单中,使用<%= Html.Hidden("returnUrl") %>
    • 在操作中,使用ViewData["returnUrl"] = Request.Url;
  2. 用户通过POST提交表单
  3. 重定向到returnUrl模型绑定,如果不是null。否则,请重定向到主页。
  4. 这就完成了工作,但感觉这会导致很多重复。我也意识到我可能会重定向到Request.UrlReferrer ...

    你认为最干净,最理想的方法是什么?

2 个答案:

答案 0 :(得分:12)

你这样做的方式很好,但看起来你可能会稍微过度思考它。您的POST操作是否从多个表单中获取表单帖子?如果没有,为什么还要隐藏一个隐藏的表格字段?你可以通过一个简单的RedirectToAction("MyAction")

来逃避

答案 1 :(得分:4)

通常,处理POST的操作知道成功提交后需要重定向的位置。因此,实现RGP的每个操作都可以简单地调用RedirectToAction(string)

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