[C# VB] page_load 與 page_init差別
- 簡單的區分,如果是要"動態建立控制項",那就要在Init事件中;如果是要"讀取正確的控制項屬性值",那就要在Load事件中。需要這樣做的原因是 LoadViewState 的動作介於Init事件之後及Load事件之前。(參考網頁生命週期:ASP.NET 網頁生命週期概觀)
- LoadViewState (以下簡稱LVS)的作用是載入ViewState的資料來更新控制項屬性值,所以必須在LVS之前就把控制項建立完成,才有辨法由ViewState中載入最新屬性值,所以一定要在Init事件中把控制項建立完成,在此事件中讀取控制項的屬性值都是初始值,也就是設計階段時屬性視窗中的值。而 Load 事件是在 LVS動作之後觸發,所以在Load事件中讀到的控制項屬性值才是最新值,而不會是初始值。
- 控制項的初始化(Initialize)的動作一定要放在 Page_Init 事件中!控制項的初始化也包括設定控制項的預設值(Default Value)。千萬不能將設定控制項初始值的程式碼寫在 Page_Load 事件裡,否則當 PostBack 回來的值會被 Page_Load 事件中的程式碼蓋掉。動態將控制項加入到 ASP.NET 頁面中「最好」在 Page_Load 事件中執行,以確保在後續事件中可以取得頁面中所有的控制項。
沒有留言:
張貼留言