這是一個非常普通的需求。
頁面上有一個按鈕,點擊之后提交表單,如果什么都不管的話,用戶可以在服務器響應完成之前再次點擊,這樣就出現了二次提交,后果可大可小。
那么我們應該防止二次點擊,就要在用戶點第一次之后馬上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