asp.net 中防止因為網速慢等影響交互的問題導致用戶可能點擊多次提交按鈕,從而導致數據庫中出現多條重復的記錄,經過親自驗證在網上找的方法,找到兩個切實可行的方法:
第一種方法1.
頁面前台按鈕:
<asp:Button ID="btnSumbit" runat="server" Text="提交" onclick="btnSumbit_Click" />
在后台Page_load事件中添加
btnSumbit.Attributes.Add("onclick", "this.disabled=true;" +this.ClientScript.GetPostBackEventReference(btnSumbit, ""));
在按鈕點擊事件中加入:
System.Threading.Thread.Sleep(5000);//延遲5秒鍾
這個五秒鍾不是定值,你可以根據自己的情況而定
第二種方法:
頁面前台按鈕:
<asp:Button ID="btnSumbit" runat="server" UseSubmitBehavior="false" OnClientClick="this.value='正在提交';this.disabled=true;" Text="提交" onclick="btnSumbit_Click" />
注意這個UseSubmitBehavior 屬性
后台就沒有什么要添加的了。
好了,說了上面的方法,有幾個問題,第一
btnSumbit.Attributes.Add("onclick", "this.disabled=true;" +this.ClientScript.GetPostBackEventReference(btnSumbit, ""));
這句話有什么作用,什么意思呢
第二:
UseSubmitBehavior 屬性 什么意思呢
希望高手解答,thanks
在網上百度了一下,找到了這樣的解釋:
<W3school的解釋
UseSubmitBehavior 屬性規定按鈕控件使用客戶端瀏覽器內建的提交功能,還是使用 ASP.NET 的 postback 機制。
該屬性被設置為 TRUE,如果控件使用瀏覽器的提交機制。否則為 FALSE。默認值是 TRUE。
當設置為 FALSE 時,ASP.NET 會添加一段客戶端腳本來回傳該表單。
當 UseSubmitBehavior 屬性為 false 時,控件開發人員可以使用 GetPostBackEventReference 方法來返回 Button 的客戶端回發事件。GetPostBackEventReference 方法返回的字符串包含客戶端函數調用的文本,可以插入到客戶端事件處理程序中。
<其他的一些
Button的UseSubmitBehavior屬性設為false后它就不是執行submit的動作而是一般的Button而此時如果使用OnClientClick ="if (confirm('確定嗎?')==false) {return false;}"才會有效果