【ASP.NET】 【防止连续多次点击提交按钮 导致页面重复提交】

当网络延迟导致用户连续点击提交按钮时,可能会产生重复数据。本文介绍了两种经过验证有效的方法来防止这种情况:一是利用`__doPostBack`方法在客户端阻止多次提交;二是通过设置按钮控件的`UserSubmitBehavior`属性并使用JavaScript全局变量来控制提交状态。此外,作者还分享了一个简单的自创方法,利用JS全局变量`IsClick`在UpdatePanel异步回发后重置,以避免重复提交。
摘要由CSDN通过智能技术生成
最近做项目遇到了这样的情况:

公司网络比平常慢了不少,在点击保存按钮提交页面后需等待挺长的一段时间,忍不住手贱点多了几次,当提交完成后发现数据库竟多出了几条相同的数据!也就是说相同的内容提交了多次。

经测试,当网络很顺畅的时,快速连续不断点击提交按钮,也会造成页面重复提交!点击多少次就会提交多少次,也就会录入多少条数据!

当然,若录入的数据中有唯一值的判断处理或者数据表字段有唯一性约束,就不会出现录入重复数据的情况!


在网上找了一下,找到了两个经验证可行的方法。

第①种:

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值