如何在asp.net中使用“Post/Redirect/Get”(又称为“重定向后的Post”)?

4
在ASP.NET中,执行某些操作后进行刷新似乎会导致它们再次发生,即使该操作没有意义(比如双重删除)。在Web开发中,处理这种情况的方法是在提交后重定向,以获取一个干净的页面版本,可以在不重新提交到Web服务器的情况下进行刷新。那么,我该如何在ASP.NET中实现这一点呢?

我正在使用.NET Framework 2.0,但对适用于所有框架版本的答案感兴趣。 - minty
2个回答

5

我感觉有一个更深层次的问题我还没有理解,但是让我来试试。在你的postback事件中:

// the post handling logic, e.g. the click event code
Response.Redirect(Request.RawUrl);

应该使用 Response.Redirect(Request.RawUrl, false); 来完成处理并避免应用程序终止会话等问题。 - GlennG

-1
使用Server.Transfer方法。
Server.Transfer方法有第二个参数——“preserveForm”。如果您将其设置为True,例如使用Server.Transfer("WebForm2.aspx", True)语句,则现有的查询字符串和任何表单变量仍将可用于您要转移的页面。

http://www.developer.com/net/asp/article.php/3299641


4
那么,这如何防止重复删除或重复提交? - BobbyShaftoe
@BobbyShaftoe 这是不可能的。你不能使用Server.Transfer,因为P-R-G 需要 向客户端发送重定向状态码。 - Ian Boyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接