如何阻止不必要的回发

时间:2009-09-17 07:40:21

标签: asp.net

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

1 个答案:

答案 0 :(得分:7)

关于这个主题的文章。

Preventing Duplicate Record Insertion on Page Refresh

方法1

  

一个简单的解决方案是   Response.Redirect回到同样的   INSERT命令后的页面   调用。这将调出页面   没有传输任何帖子标题   它。使用Request.Url.ToString()   作为第一个参数   Response.Redirect将导致两者   URL和页面的查询字符串   包含在重定向中。指某东西的用途   false作为第二个参数   抑制自动Response.End   否则可能产生一个   ThreadAbortedException。一个   这种方法的缺点是   任何已构建的ViewState   将失去。

方法2

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

方法3

  

下一批解决方案的工作原理   确定用户是否有   在浏览器中刷新页面   而不是按下表单的提交   按钮。所有这些解决方案都依赖于   关于网站使用的能力   会话变量成功。如果   该网站使用基于cookie的   会话,但用户的浏览器   不允许使用cookies,这些   解决方案都会失败。   另外,应该会议   到期这些解决方案也会   失败。

方法4

  

用户应该以某种方式管理   绕过上述的解决方案   上面,最后一道防线是   数据库。有两种方法   可以用来防止a   插入重复记录   进入数据库。对于每种方法,   我已将SQL代码移动到存储中   程序,因为现在有更多   涉及的处理步骤和这些   更容易在单独说明   存储过程。但请注意a   存储过程不严格   为了这些方法所需要的   工作