注册或者点击按钮时,怎么防止用户重复提交数据(实例讲解)
2023-06-13 09:15:14 时间
asp.net实现点击按钮后设按钮不可用并提交
<asp:ButtonID="Button1"runat="server"Text="123456"OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False" onclick="Button1_Click"/>
客户端加载的时候,重新将这个操作再启动
<scriptlanguage="javascript"type="text/javascript">
functioncontrolButton(flag){
varbtnObj=document.getElementById("Button1");
btnObj.disabled=flag;
}
</script>
</head>
<bodyonload="controlButton(false);">
后台代码:
protectedvoidButton1_Click(objectsender,EventArgse)
{
Thread.Sleep(3000);
Response.Write("123213<br>");
Response.Write("123213<br>");
Response.Write("123213<br>");
}
如果页面按钮很多,那么可以采用另一种方式:
后台page_load代码:
this.BtnSend.Attributes.Add("onclick",this.GetPostBackEventReference(this.BtnSend)+";this.disabled=true;");
前台button的代码:
<asp:buttonid="BtnSend"runat="server"Width="80px"ForeColor="White"
Text="发送"BackColor="#376091"BorderColor="#FFFFFF"Font-Bold="True"
style="height:24px"Font-Size="13px"BorderStyle="None" OnClick="BtnSend_Click"></asp:button>
因为控件的this.disabled设置后,控件为禁用状态,无法在回发调用后台的事件方法,所以必须用GetPostBackEventReference先进行回调后台的事件方法后,再调用disabled=true。
ASP.NETUseSubmitBehavior属性
定义和用法
UseSubmitBehavior属性规定按钮控件使用客户端浏览器内建的提交功能,还是使用ASP.NET的postback机制。
该属性被设置为TRUE,如果控件使用浏览器的提交机制。否则为FALSE。默认值是TRUE。
当设置为FALSE时,ASP.NET会添加一段客户端脚本来回传该表单。
当UseSubmitBehavior属性为false时,控件开发人员可以使用GetPostBackEventReference方法来返回Button的客户端回发事件。GetPostBackEventReference方法返回的字符串包含客户端函数调用的文本,可以插入到客户端事件处理程序中。
语法
<asp:ButtonUseSubmitBehavior="TRUE|FALSE"runat="server"/>实例
下面的例子使用ASP.NET的postback机制:
<scriptrunat="server">
SubSubmitBtn(objAsObject,eAsEventArgs)
lblMsg.Text="SubmittedusingtheASP.NETpostbackmechanism."
EndSub
</script>
<formrunat="server">
Clickthebutton:
<asp:buttonid="Button1"runat="server"
Text="Submit"onclick="SubmitBtn"
UseSubmitBehavior="FALSE"/>
<br/>
<asp:labelid="lblMsg"runat="server"/>
</form>