前言
上一篇「讓 ASP.NET 也可以使用 MsgBox 方法」文章中提到如何封裝 JavaScript 的 alert 方法,另一個常使用在用戶端處理「詢問訊息」的就是 JavaScript 的 confirm 方法,在此篇文章我們將撰寫自用的 Confirm 方法,使頁面的程式碼儘量不要直接去撰寫 JavaScript 程式碼,以增加系統的維護性。
程式實作
我們將使用「撰寫自用的 ScriptManager 來管理用戶端指令碼」文中提及的 TBScriptManager 類別為基礎,在 TBScriptManager 類別新增處理「詢問訊息」會使用到相關方法。我們在 TBScriptManager 類別新增二個 GetConfirmScript 多載方法,用以取得詢問訊息相關的 JavaScript 程式碼;另新增 Confirm 方法來直接註冊詢問訊息的用戶端指令碼,以下將以實例說明這三個方法的使用時機及方式。
案例一:按鈕加上詢問訊息,按「確定」才會引發按鈕的 Click 事件
按鈕加上詢息訊息是常使用到的案例,例如按下刪除鈕時,先詢問用戶是否確定刪除資料,當按「確定」時才會真正去執行刪除動作。我們可以在 Page Load 事件中,去設定 Button.OnClientClick 屬性,加入詢問訊息的用戶端指令碼。
案例二:純用戶端的詢問訊息
詢問訊息只是在用戶端執行,並不會產生 PostBack。
案例三:先執行伺服端程式再彈出詢問訊息,依用戶端回應再接續執行
例如有登打請假單儲存時,執行儲存完畢要彈出一個是否送審詢問訊息。在 WinForm 撰寫這個程式碼非常單純,只要在儲存後彈出詢問訊息,等待用戶回應接續執行後面的程式碼即可。可是在 WebForm 要撰寫相同的功能就有點麻煩了,因為整個程式的流程是在伺服端及用戶端交互運作。
請假單儲存(伺服端) -> 彈出詢問訊息(用戶端) -> 取得用戶端回應決定是否送審(伺服端)
在 WebForm 要處理這類問題,要分為二個階段處理,第一個階段處理「請假單儲存(伺服端) -> 彈出詢問訊息(用戶端) 」,在下面的程式碼中,訊問訊息的回應結果無論是「確定」或「取消」都會產生 PostBack 動作傳不同的參數。
第二階段在 Page Load 事件處理用戶端詢問訊息的回應「取得用戶端回應決定是否送審(伺服端)」