Post/Redirect/Get模式在ASP.NET MVC中 Post/Redirect/Get(PRG)模式是一种在Web应用程序中处理表单提交的常用模式。在ASP.NET MVC中,使用该模式可以实现更好的用户体验和更可靠的表单处理。 在PRG模式中,当用户提交表单时,应用程序首先处理POST请求,然后将用户重定向到一个新的URL,通常是一个GET请求。这样做的好处是防止用户刷新页面时重新提交表单,以及在用户点击“后退”按钮时避免再次提交表单。 在ASP.NET MVC中实现PRG模式可以通

13 浏览
0 Comments

Post/Redirect/Get模式在ASP.NET MVC中 Post/Redirect/Get(PRG)模式是一种在Web应用程序中处理表单提交的常用模式。在ASP.NET MVC中,使用该模式可以实现更好的用户体验和更可靠的表单处理。 在PRG模式中,当用户提交表单时,应用程序首先处理POST请求,然后将用户重定向到一个新的URL,通常是一个GET请求。这样做的好处是防止用户刷新页面时重新提交表单,以及在用户点击“后退”按钮时避免再次提交表单。 在ASP.NET MVC中实现PRG模式可以通

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

以下是我目前的做法:

  1. 向用户显示表单。

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

这个做法可以完成任务,但感觉会导致很多重复。我也意识到我可能可以重定向到Request.UrlReferrer...

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

0
0 Comments

Post/Redirect/Get模式(PRG Pattern)是一种在ASP.NET MVC中常用的设计模式,用于处理表单的提交和重定向。它的出现是为了解决表单重复提交和页面刷新导致的数据不一致的问题。

通常情况下,一个处理POST请求的action方法在成功提交后会知道需要重定向到哪个页面。因此,每个实现PRG的action方法可以简单地调用RedirectToAction(string)方法来进行重定向。

例如,在一个名为Edit的action方法中,我们保存了用户提交的email信息,并进行重定向到Edit页面:

public ViewResult Edit(string email)
{
  // 保存email信息
  return RedirectToAction("Edit");
}

上述代码中,我们使用RedirectToAction(string)方法将请求重定向到Edit页面。这样做的好处是,当用户刷新页面或者后退时,不会重新提交表单数据,避免了数据的重复提交和页面刷新导致的数据不一致问题。

通过PRG模式,我们可以有效地防止重复提交表单数据和页面刷新导致的数据不一致问题。这种模式的实现非常简单,只需要在处理POST请求的action方法中使用RedirectToAction(string)方法进行重定向即可。

0
0 Comments

在ASP.NET MVC中,Post/Redirect/Get(PRG)模式用于解决重复提交表单的问题。当用户提交表单时,服务器会处理该表单并返回一个响应。如果用户刷新页面或返回到上一页,浏览器会重新提交表单,导致服务器再次处理相同的请求,可能会产生不必要的副作用。

为了解决这个问题,可以使用PRG模式。具体做法是,当服务器处理完表单提交请求后,使用重定向将用户导向另一个页面,而不是直接返回响应。这样,当用户刷新页面或返回时,浏览器只会重新发送GET请求,而不是重新提交表单。

在ASP.NET MVC中,可以使用RedirectToAction方法实现重定向。在处理完POST请求后,调用RedirectToAction方法将用户重定向到另一个Action方法,然后再返回响应。这样,用户在刷新页面或返回时,浏览器只会重新发送GET请求,避免了重复提交表单的问题。

如果只有一个表单,可以直接使用RedirectToAction方法进行重定向,不需要使用隐藏字段。但如果有多个表单,可以考虑使用隐藏字段来标识不同的表单,以便在重定向时能够正确地处理不同的请求。

总结起来,使用PRG模式可以有效解决重复提交表单的问题。在ASP.NET MVC中,可以通过RedirectToAction方法实现重定向,避免浏览器重新提交表单。如果有多个表单,可以考虑使用隐藏字段来进行标识。

0