asp.net禁用按钮以防止重复提交

来源:这里教程网 时间:2026-02-21 13:06:39 作者:

方法一: 

只在按钮前台代码中增加onclientclick="this.disabled=true;" usesubmitbehavior="false"即可。 

方法二: 
protected void page_load(object sender, eventargs e) 

    button1.attributes.add("onclick", this.getpostbackeventreference(button1) + ";this.disabled=true;"); 

注:不要写在if (!page.ispostback) 里,否则会脚本错误的。 



过程就是单击按钮后将其置为disabled,即this.disabled=true。 
虽然过程很简单,但是里面有个小技巧(我以前也不知道),就是button控件里不常用的usesubmitbehavior属性,要使button单击后disabled,并且页面(form)还要提交,就必须把usesubmitbehavior设为false,否则页面(form)将不会提交。 

msdn对usesubmitbehavior的解释是: 

使用 usesubmitbehavior 属性来指定 button 控件使用客户端浏览器的提交机制还是 asp.net 回发机制。默认情况下,此属性的值为 true,从而导致 button 控件使用浏览器的提交机制。如果指定为 false,则 asp.net 页框架将客户端脚本添加到页面,以将窗体发送到服务器。 

当 usesubmitbehavior 属性为 false 时,控件开发人员可以使用 getpostbackeventreference 方法来返回 button 的客户端回发事件。getpostbackeventreference 方法返回的字符串包含客户端函数调用的文本,可以插入到客户端事件处理程序中。 

例如 
height="30px" onclientclick="this.disabled=true;" usesubmitbehavior="false"/> 


当usesubmitbehavior为false时,会在输出的html里看到 
 


__dopostback('issue1$dopublishbutton',''),就是asp.net加上去的。如果usesubmitbehavior为true,就不会有这句话,页面(form)就不会提交。

相关推荐