这是一个非常普通的需求。
页面上有一个按钮,点击之后提交表单,如果什么都不管的话,用户可以在服务器响应完成之前再次点击,这样就出现了二次提交,后果可大可小。
那么我们应该防止二次点击,就要在用户点第一次之后马上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