最近做项目遇到了这样的情况:
公司网络比平常慢了不少,在点击保存按钮提交页面后需等待挺长的一段时间,忍不住手贱点多了几次,当提交完成后发现数据库竟多出了几条相同的数据!也就是说相同的内容提交了多次。
经测试,当网络很顺畅的时,快速连续不断点击提交按钮,也会造成页面重复提交!点击多少次就会提交多少次,也就会录入多少条数据!
当然,若录入的数据中有唯一值的判断处理或者数据表字段有唯一性约束,就不会出现录入重复数据的情况!
在网上找了一下,找到了两个经验证可行的方法。
第①种:
aspx页面按钮:
<asp:Button ID="btnSumbit" runat="server" Text="提交" οnclick="btnSumbit_Click" />
Page_Load 事件:
btnSumbit.Attributes.Add("onclick", "this.disabled=true;" +this.ClientScript.GetPostBackEventReference(btnSumbit, ""));
//若使用了 ASP.NET验证控件 则要保证客户端验证函数 Page_ClientValidate() 的执行,代码如下
//Page_ClientValidate() 函数用于在包含微软验证控件的aspx页面中(客户端js脚本),根据用户输入操作是否合法,返回True或者False
btnSumbit.Attributes.Add("onclick", "if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }};this.disabled=true;" +this.ClientScript.GetPostBackEventReference(btnSumbit, ""));
提交按钮 btnSumbit 对应的客户端Html代码如下:
<input type="submit" name="btnSumbit" value="提交" οnclick="this.di