禁止表单在刷新时重新提交的最佳方法是什么? !IsPostBack
无法处理刷新。我尝试使用在初始提交时设置为true的bool变量,但是每次加载页面时它似乎都会重置。
我已经阅读了一些关于cookie的内容,但我不确定如何设置它们以便在页面之间传递。
我的设置是:
我是否像在SessionState中一样在web.config中设置cookie?有什么比饼干更好用吗?
答案 0 :(得分:6)
因为我认为你可以看一下Post / redirect / Pattern PRG pattern 来自维基百科
HTTP 1.1规范引入了HTTP 303响应代码 确保在这种情况下,Web用户的浏览器可以安全地进行 刷新服务器响应而不会导致初始HTTP POST 要求重新提交。
它只是在成功发布后重定向,以便用户刷新导致完成幂等GET而不是POST。它的另一个优点是浏览器在其历史记录中“忘记”POST,这意味着后退按钮也不会提交。
即使您可以在向数据库提交数据之前进行检查,无论数据是否已存在(基于某些主键或唯一标识符)。
但你确实检查了这个PRG模式,它可能对你有帮助。
答案 1 :(得分:2)
最好的办法是为表单指定一个唯一的ID(将其放入隐藏的表单变量中)。提交表单后,您将跟踪ID之前是否已“使用”。如果没有,您允许继续提交,否则您拒绝提交。
编辑:我应该清楚你真的需要一个数据库来正确地做到这一点。您可以尝试使用cookie进行搜索,但这不是万无一失的,因为用户可能在浏览器中禁用了cookie。
答案 2 :(得分:1)
在表单中设置目标,当您单击“提交”时,它将转到目标页面。执行在该页面中处理的内容并重定向到结果页面。这可以是您用于提交的同一页面。刷新结果页面不会重新提交。
答案 3 :(得分:1)
对于这种情况,我觉得没有比下面链接更好的了。