asp.net 防止二次提交 以及UseSubmitBehavior属性

这是一个非常普通的需求。

页面上有一个按钮,点击之后提交表单,如果什么都不管的话,用户可以在服务器响应完成之前再次点击,这样就出现了二次提交,后果可大可小。

那么我们应该防止二次点击,就要在用户点第一次之后马上Disable这个按钮。

具体:

按钮代码:

 <asp:Button ID="Button1" runat="server" UseSubmitBehavior="false"  
OnClick
="Button1_Click" Text="Button" OnClientClick="DisableButton(this)" />

Javascript:

 <script>
        function DisableButton(b) {
            b.disabled = true;
            b.value = 'Submitting';
          
        }

      
</script>

然后在后台代码里的Button1_Click事件里再做你想做的事情。

我们可以注意到这里是用OnClientClick的属性来调用Javascript从而实现Disable按钮的。开始的时候,我没有加入UseSubmitBehavior属性,就变成了点击按钮只执行客户端的代码,服务器端代码就不执行了。为了解决这个问题,加入了UseSubmitBehavior属性,并且要把他的值设为false。

为什么要设为false呢?简单来说,false表示不用客户端方法提交,则从服务器端提交,也就是执行OnClick的事件。反之,如果是true,则从客户端提交,忽略服务器端的事件。具体请看MSDN:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.usesubmitbehavior.aspx

posted @ 2012-04-20 15:54  Joy Zhong  阅读(3298)  评论(3编辑  收藏  举报