如何阻止不必要的回发

0 asp.net

我从事ASP.NET C#.在按钮点击事件下我想保存它工作正常,但按下浏览器的刷新按钮后,再次发生此事件我想停止此事件.

rah*_*hul 7

关于这个主题的文章.

防止页面刷新时重复记录插入

方法1

一个简单的解决方案是在调用INSERT命令后将Response.Redirect返回到同一页面.这将调用页面而不向其发送任何帖子标题.使用Request.Url.ToString()作为Response.Redirect的第一个参数将导致URL和页面的查询字符串都包含在重定向中.使用false作为第二个参数将抑制自动Response.End,否则可能会生成ThreadAbortedException.这种方法的缺点是任何已构建的ViewState都将丢失.

方法2

一种相关的方法是将表单提交到中间处理页面然后将Response.Redirect返回到调用页面,类似于表单处理的传统ASP方法.这与简单地使用Button_Click事件中的Response.Redirect具有相同的效果,因此它具有相同的缺点,另外的缺点是为网站开发人员创建另一个页面来管理.

方法3

下一批解决方案通过确定用户是否在浏览器中刷新页面而不是按下表单的提交按钮来工作.所有这些解决方案都取决于网站成功使用Session变量的能力.如果网站使用基于cookie的会话,但用户的浏览器不允许使用cookie,则这些解决方案都将失败.此外,如果会话到期,这些解决方案也将失败.

方法4

如果用户以某种方式设法绕过上述的上述解决方案,则最后一道防线位于数据库中.有两种方法可用于防止重复记录插入数据库.对于每种方法,我已将SQL代码移动到存储过程中,因为现在涉及更多处理步骤,这些更容易在单独的存储过程中进行说明.但请注意,为了使这些方法起作用,并不严格要求存储过程.