处理表单提交后的刷新

本文关键字:刷新 表单提交 处理 | 更新日期: 2023-09-27 18:20:14

禁止表单在刷新时重新提交的最佳方法是什么?!IsPostBack不处理刷新。我尝试过使用一个在初次提交时设置为true的bool变量,但每次加载页面时,它似乎都会重置。

我读过一些关于cookie的文章,但我不知道如何设置这些cookie以在页面之间传递。

我的设置是:

  • Default.aspx(&Default.aspx。cs)
  • Results.aspx(&Results.aspx.cs)

我是否像SessionState一样在web.config中设置cookie?有什么比饼干更好用的吗?

处理表单提交后的刷新

我认为您可以查看Post/redirect/Pattern PRG模式来自维基百科

HTTP 1.1规范将HTTP 303响应代码引入到确保在这种情况下,web用户的浏览器可以安全刷新服务器响应而不引起初始HTTP POST请求重新提交。

它只是在成功发布后重定向,这样用户刷新就会产生一个幂等GET,而不是post。它还有一个额外的优点,即浏览器在其历史记录中"忘记"POST,这意味着后退按钮也不会提交。

甚至在向数据库提交数据之前,您也可以根据某个主键或唯一标识符来检查数据是否已经存在。

但你确实检查了这个PRG模式,它可能会对你有所帮助。

响应重定向。在asp.net 中

最好的想法是为表单分配一个唯一的ID(将其放入隐藏的表单变量中)。提交表单时,您将跟踪ID以前是否被"使用"过。如果没有,您允许提交继续,否则您将拒绝它。

编辑:我应该很清楚,你真的需要一个数据库才能正确地做到这一点。你可以尝试用cookie来欺骗一些东西,但这不是傻瓜式的,因为用户可能在浏览器中禁用了cookie。

在表单中设置目标,当您单击提交时,它将转到目标页面。在该页面中执行任何处理,并重定向到结果页面。可以是您用于提交的同一页面。刷新结果页面不会进行任何重新提交。

我觉得没有什么比下面这个场景的链接更好的了。

http://www.codeproject.com/Articles/18841/Refresh-Module