处理表单提交后的刷新
本文关键字:刷新 表单提交 处理 | 更新日期: 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