ASP.NET 觸發事件提交前先處理事件

 了解網頁提交運作原理

 

ASP.NET 在撰寫程式時,正常的觸發事件為 OnClick()

觸發事件必須依循條件,判斷是否執行 ( if, else )

甚至要對物件做改變如:按下按鈕後無法再點選

 

但依照 ASP.NET 運作原理來觀看

正規的 OnClick() 在提交那刻開始

就無法刷新前台物件,到提交事件結束時才會刷新

即使程式碼寫在提交事件一開始。

 

站在功能使用生命週期來看

等到跑完再來讓按鈕無法被點選,已經來不及了

所以會需要 OnClientClick() 事件

 

 

甚麼是 OnClientClick() ?

OnClientClick 是前台觸發事件,會搶在 OnClick 執行前優先執行

適合在提交數據到後台之前,檢查數據是否符合提交範圍

若不符合,則連後台提交事件 OnClick 都不會執行。

亦適用在提交前,先讓按鈕無法被點選,提交到後台

等到方法執行完畢,再讓按鈕可被點選。

 

 

事實上站在微軟設計的理念來運作

OnClientClick 事件是前台觸發事件

OnClick 是後台觸發事件,會提交到後台

OnClick 雖然是提交後台事件

但還是可以被套用 JavaScript Function 來在前台執行

不要被混淆誤用了

 

 

 

OnClientClick() 事件本身是利用 javascript 來執行

可直接將要做的事情寫在觸發事件 OnClientClick() 內,方法如下:

<asp:Button ID="BtnChk" runat="server" Text="確認" OnClick="BtnChk_Click" OnClientClick="this.value='處理中';this.disabled=true;" UseSubmitBehavior="false" />

 

若是透過 JavaScript Function ,則 JavaScript Function 必須要具有能回傳 bool 值

當 OnClientClick 回傳 true

程式會自動執行 OnClick 事件

反之當 OnClientClick 回傳 false

程式不會執行 OnClick

Programmer 必須自行在 OnClientClick 秀錯誤訊息