共用方式為


控制項和配接器的互動

更新:2007 年 11 月

有兩種類型的互動會在 ASP.NET Mobile 控制項和其相關配接器的生命週期當中發生:控制項和裝置配接器之間的互動,以及網頁和頁面配接器之間的互動。

控制項和控制項裝置配接器

在行動控制項的生命週期當中,下列互動會發生在控制項和其相關裝置配接器之間:

  1. ASP.NET 首先會檢查快取中是否有網頁的複本。如果有一個存在,快取的網頁會傳送至用戶端。如需快取的詳細資訊,請參閱行動文字寫入器呈現的最佳作法的<輸出快取>章節。

  2. 會建立控制項。在第一次嘗試存取控制項的 Adapter 屬性時,會先選取某個控制項配接器,接著為其建立新的執行個體 (Instance),如配接器對應中<瞭解裝置配接器的選擇程序>章節所述。

    控制項裝置配接器的 Control 會在新配接器建立時設定。

  3. 如果網頁已在快取中,網頁則會呼叫配接器以判斷快取是否需要藉由任何其他頁首來變更。

  4. 會呼叫控制項的 OnInit 方法。MobileControl 基底類別 (Base Class) 實作 (Implementation) 會呼叫控制項裝置配接器的 OnInit 方法。

  5. 如果控制項的私用 (Private) 檢視狀態存在的話,則會將其載入。如果裝置配接器有儲存控制項的任何裝置特定狀態,LoadPrivateViewState 方法的 MobileControl 基底類別實作便會呼叫該控制項裝置配接器的 LoadAdapterState 方法。

  6. 會呼叫控制項的 OnLoad 方法。MobileControl 基底類別實作會呼叫控制項裝置配接器的 OnLoad 方法。

  7. 如果控制項實作 IPostBackEventHandler 介面並接收回傳事件,則會呼叫控制項的 RaisePostBackEvent 方法。如果傳送至控制項的事件根據目標裝置而有所不同,這個方法的控制項實作便會呼叫控制項裝置配接器的 HandlePostBackEvent 方法。HandlePostBackEvent 方法會傳回 true 或 false,指出裝置配接器是否有處理該事件。

  8. 如果適用的話,會儲存控制項的私用檢視狀態。當配接器需要存放控制項的任何裝置特定狀態時,SavePrivateViewState 方法的 MobileControl 基底類別實作便會呼叫控制項裝置配接器的 SaveAdapterState 方法。

  9. 會呼叫控制項的 OnPreRender 方法。MobileControl 基底類別實作會呼叫控制項裝置配接器的 OnPreRender 方法。

  10. 會呼叫控制項的 Render 方法。MobileControl 基底類別實作會呼叫控制項配接器的 Render 方法。

  11. 會呼叫控制項的 OnUnload 方法。MobileControl 基底類別實作會呼叫控制項裝置配接器的 OnUnload 方法。

網頁和頁面配接器

雖然 MobilePage 類別繼承自 .NET Framework Page 類別而非 MobileControl 類別,MobilePage 類別卻與 MobileControl 類別具有非常相似的配接器相關行為。

ASP.NET 中的 Mobile 頁面配接器,例如 ChtmlPageAdapterHtmlPageAdapterWmlPageAdapterXhtmlPageAdapter,都會實作 IPageAdapter 介面 (其本身則實作 IControlAdapter 介面)。因此,頁面配接器的生命週期和控制項配接器的生命週期有許多相似之處。行動網頁與其裝置配接器會專門與 Page 類別進行互動,並在其生命週期中進行下列步驟:

  1. ASP.NET 建立網頁。在第一次嘗試存取網頁的 Adapter 屬性時,會先選取某個頁面配接器,接著為其建立執行個體,如配接器對應中的<瞭解裝置配接器的選擇程序>章節所述。頁面配接器的 Page 屬性會在配接器建立時設定。

  2. 會呼叫頁面的 OnInit 方法。MobilePage 基底類別實作會呼叫頁面配接器的 OnInit 方法。

  3. 會呼叫頁面的 OnDeviceCustomize 方法。MobilePage 基底類別實作會呼叫頁面配接器的 OnDeviceCustomize 方法。

  4. 為了判斷網頁的回傳模式 (如果適用的話),MobilePage 基底類別會呼叫頁面配接器的 DeterminePostBackMode 方法。這個方法有機會可以檢查和修改要求變數。如果其中還沒有任何一項資訊,這個方法也負責將任何永續性的檢視狀態資訊轉譯回到表單變數。

  5. 如果適用的話,會載入網頁的私用檢視狀態。當配接器會儲存網頁的任何裝置特定檢視狀態時,MobilePage 就會呼叫頁面配接器的 LoadAdapterState 方法。

  6. 會呼叫頁面的 OnLoad 方法。MobilePage 基底類別實作會呼叫頁面配接器的 OnLoad 方法。

  7. 如果適用的話,會儲存網頁私用檢視狀態。當配接器需要存放網頁的任何裝置特定檢視狀態時,MobilePage 基底類別就會呼叫頁面配接器的 SaveAdapterState 方法。

  8. MobilePage 基底類別會呼叫頁面配接器的 SaveViewState 方法。這個方法負責確保當做參數傳入的狀態會序列化至寫入的網頁。

  9. 在重新編頁期間,MobilePage 基底類別會存取頁面配接器的 OptimumPageWeight 屬性。配接器會傳回適合目標裝置的頁面權重。

  10. 會呼叫頁面的 OnPreRender 方法。MobilePage 基底類別實作會呼叫頁面配接器的 OnPreRender 方法。

  11. 會建立進行擷取網頁輸出的寫入器執行個體。MobilePage 基底類別會呼叫頁面配接器的 CreateTextWriter 方法,該方法則必須傳回目標的特定文字寫入器。

  12. 會呼叫頁面的 Render 方法。MobilePage 基底類別實作會呼叫頁面配接器的 Render 方法。在呈現期間的某些時刻,配接器也負責透過網頁的 ClientViewState 屬性來存取並寫入網頁的私用檢視狀態。

  13. 會呼叫頁面的 OnUnload 方法。MobilePage 基底類別實作會呼叫頁面配接器的 OnUnload 方法。

請參閱

概念

配接器對應

配接器類型

其他資源

加入新裝置配接器和裝置支援