解決防止多次點擊,使數據重復提交,也就是防止二次提交
由於趁網絡不注意,多點了幾次,發生了不可描述的事情,可以在 aps.net 的 Button 中添加以下兩個屬性
UseSubmitBehavior="false" OnClientClick="this.disabled=true;"
使用 OnClientClick 的原因是用OnClientClick的屬性來調用Javascript從而實現Disable按鈕,加入UseSubmitBehavior屬性防止點擊按鈕只執行客戶端的代碼,服務器端代碼就不執行了,值有false和 true,false表示不用客戶端方法提交,則從服務器端提交,也就是執行OnClick的事件。反之,如果是true,則從客戶端提交,忽略服務器端的事件。
UseSubmitBehavior屬性可以指定Button控件是使用客戶端瀏覽器的提交機制還是ASP.NET回發機制。默認情況下,此屬性的值為true,導致Button控件使用瀏覽器的提交機制。如果指定false,則ASP.NET頁面框架會將客戶端腳本添加到頁面,以將表單發布到服務器。當UseSubmitBehavior屬性為時false,控件開發人員可以使用GetPostBackEventReference方法返回Button的客戶端回發事件。GetPostBackEventReference方法返回的字符串包含客戶端函數調用的文本,可以將其插入客戶端事件處理程序中。
OnClientClick 和 OnClick 區別:
OnClientClick是客戶端事件處理方法,一般采用JavaScript進行處理,可以直接在瀏覽器中運行,不跟后台發生交互。
OnClick是服務器端事件處理方法,在服務器端,也就是IIS中運行。執行順序為:點擊按鈕->頁面回傳(PostBack)->執行Click事件綁定的方法
在 .NET 的 button中添加上述兩個屬性
<asp:Button ID="btnAddUpt" runat="server" Text="保存" CssClass="ttbtn" onclick="btnAddUpt_Click" UseSubmitBehavior="false" OnClientClick="this.disabled=true;" style="width:80px; display:none;" />
官方文檔:
https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.button.usesubmitbehavior?redirectedfrom=MSDN&view=netframework-4.8#System_Web_UI_WebControls_Button_UseSubmitBehavior
