2010-01-22 36 views
15

在ASP.NET MVC中实现Post/Redirect/Get模式的最佳做法是什么?特别是当你想重定向回初始动作/控制器时,最好的办法是什么?在ASP.NET MVC中发布/重定向/获取模式MVC中的模式

这里是我当前如何这样做:

  1. 显示形式的用户。
    • 在表单中,使用<%= Html.Hidden("returnUrl") %>
    • 在操作中,使用ViewData["returnUrl"] = Request.Url;
  2. 用户通过POST
  3. 重定向提交表单到returnUrl模型结合,如果不是null。否则,重定向到主页。

这样就完成了工作,但感觉这样会导致很多重复。我也意识到,我可能重定向到Request.UrlReferrer ...

你认为什么是最干净,最理想的方法来实现这个?

回答

11

你这样做的方式没有问题,但看起来你可能会稍微偏执一点。你的POST动作是否从多个表单中获取表单文章?如果没有,为什么还要隐藏表单域?您可以通过简单的方式获得RedirectToAction("MyAction")

+0

目前,我不会从多个表单中获取表单发布 - 所以我绝对看到您的观点。在这种特殊情况下,我可能只是使用RedirectToAction。但是,如果我确实有多个表格,您是否仍然建议我通过我现在的方法来做? – Charles 2010-01-23 10:27:29

3

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

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