【问题标题】:Post/Redirect/Get Pattern in ASP.NET MVCASP.NET MVC 中的发布/重定向/获取模式
【发布时间】:2023-04-01 00:15:01
【问题描述】:

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

这是我目前的做法:

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

这已经完成了工作,但感觉这会导致大量重复。我也意识到我可能会重定向到Request.UrlReferrer...

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

【问题讨论】:

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


    【解决方案1】:

    你这样做的方式很好,但看起来你可能有点想多了。您的 POST 操作是否从多个表单中获取表单帖子?如果没有,为什么还要使用隐藏的表单字段?您可以使用简单的RedirectToAction("MyAction")

    【讨论】:

    • 目前,我不会从一个以上的表单中获取表单帖子 - 所以我绝对明白你的意思。在这种特殊情况下,我可能只使用 RedirectToAction。但是,如果我确实有多个表格,您是否仍然建议我通过我目前的方法来完成?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 2011-05-19
      • 1970-01-01
      • 2010-12-27
      • 2013-11-26
      • 1970-01-01
      相关资源
      最近更新 更多