這幾天真的非常不容易,搞定了一個很困難的問題。
問題:一個導出文件的按鈕,在點擊之後且事件未完成之前,不能再點擊第二次,就算點擊第二次,後臺也不能響應兩次。但是當這個事件處理完後,又可以再次點擊。
由於一般的導出功能在.net 中都是用Response,它是直接將數據輸出在客戶端頁面上了,也就是說此頁面不會再重新生成(不繼續原來的生命週期),導致點擊的事件完成之後,按鈕的樣式和事件有些就無法回到最初的狀態,這是個非常嚴重的問題。有的時候是點擊的事件完成過程中雖防止多次點擊提交,但是完成後,卻無法再點擊按鈕;有的時候按鈕完成事件能多次點擊,可是卻無法防止多次提交。
最後還是選擇在點擊按鈕之後加一個層來達到防止多次提交的目的。
頁面代碼:其中Button1是實現該效果的
注:曾經選擇用BlockUI.js來實現(被註釋掉的),發現其是在彈出下載文件的窗口之後才起反應,這就無法防止多次提交的目的,被拋棄了,一個多好的JS插件啊
WriteFileHandler.ashx:
頁面的後臺代碼:(我測試的是Button1這個按鈕,其他的按鈕我就沒測了)
這個層的設計好的地方就是不僅能禁止用戶點擊,而且還能再反應完後點關閉回到原來的頁面狀態