若要支援多重裝置,ASP.NET Mobile Web Form 網頁架構會建置在裝置配置器模型上。由於 Mobile Web Form 網頁和 ASP.NET Mobile 控制項本身皆與裝置無關,因此適當選擇的一組裝置配置器會提供裝置特定的行動網頁和控制項展示層。
裝置配置器與個別控制項和目標裝置的組合相關聯。針對任何提供的裝置,每個行動控制項類別可以有唯一與其相關聯之控制項配置器類別,而每個控制項的執行個體會繫結至相對應的配置器執行個體。
針對每個裝置的類型,您可以定義下列類別:
- **控制項配置器基底類別。**所有裝置配置器繼承的基底類別 (Base Class)。
- **頁面配置器。**與頁面相關聯的配置器。
- **表單配置器。**與頁面上每個表單相關聯的控制項配置器。
- **控制項配置器。**對應於系統中控制項的控制項配置器類別。
- **文字寫入器。**繼承自 HtmlTextWriter 類別的類別,其包含目標特定的 Helper 方法。
如同一般規則,如果某些功能需要控制項的內容,您可能需要考慮將其放置在控制項配置器類別中。
下列表格列出配置器的類型,再加上每個配置器之裝置特定實作類別的一些範例。
| 配置器和類別類型 | ASP.NET Mobile 控制類別 | 說明 |
|---|---|---|
| 控制項配置器基底類別 | ControlAdapter | 所有裝置配置器繼承自此基底類別。 |
| 頁面配置器 | ChtmlPageAdapter | 與頁面相關聯的配置器。 |
| 表單配置器 | ChtmlFormAdapter | 與頁面上每個表單相關聯的控制項配置器。 |
| 控制項配置器 | HtmlControlAdapter | 對應於系統中控制項的控制項配置器類別。 |
| 文字寫入器 | ChtmlMobileTextWriter | 繼承自 HtmlTextWriter 的類別,其包含目標特定的 Helper 方法。 |
控制項配置器基底類別
每組裝置配置器一般都會在集合中包含所有配置器的基底類別。ControlAdapter 基底類別會提供裝置類別通用的特定功能。它通常會包含需要控制項或頁面內容的 Helper 方法。這些 Helper 方法包括:
- 呈現控制項傳回事件的方法。
- 呈現控制項樣式屬性的方法。每個裝置處理樣式屬性的方法不同,所以每個配置器也會有不同的樣式呈現實作。
- 可覆寫的方法提供裝置特定 ASP.NET 網頁架構的資訊,或是包含頁面或表單之配置器的資訊。
- 存取包含頁面或表單的配置器之方便屬性。
建議您提供的控制配置器基底類別也是繼承自屬於一般基底類別的 ControlAdapter 類別。這個類別提供所有配置器都需要之 IControlAdapter 介面的預設實作。建議您基底類別的預設呈現實作呈現所有的子控制項;這會允許您使用基底類別當做複合控制項 (Composite Control) 的配置器。
頁面配置器類別
每組裝置配置器都有一個與行動網頁本身相關聯的頁面配置器類別。每個行動網頁的執行個體,或繼承自 MobilePage 物件的頁面類別,會繫結至目標裝置特定的頁面配置器。頁面配置器通常會包含下列項目:
- 裝置特定的回傳和檢視狀態功能。
- 儲存和載入裝置特定控制項狀態的方法,如重新編頁資訊。
- 準備傳回至用戶端之回應的初始化程式碼。這包含了將回應的 MIME 類型設定至適當的格式。
- 呈現傳回至用戶端之頁面基本架構 (Skeletion) 的 Render 方法。例如,HTML 架構頁面配置器通常至少會呈現 <html> 的開頭與結尾標記。
- 其他裝置特定的頁面層級功能,例如組合支援在單一回應中傳回多重頁面能力的裝置頁面配置器。
頁面配置器類別必須提供 IPageAdapter 介面的完整實作。通常您撰寫之頁面配置器類別也必須繼承自適當的控制項配置器類別。例如,如果您正單獨地撰寫 WML 架構的裝置,您可能需要繼承自 WmlControlAdapter 類別。如需關於配置器類別的詳細資訊,請參閱裝置配置器程式碼。
表單配置器類別
每組裝置配置器也有與 Form 類別相關聯的表單配置器類別。每個表單的執行個體都繫結至目標裝置特定的表單配置器。表單配置器通常會包含下列項目:
- 互動式處理裝置特定表單的方法。
- 處理單一表單配接至不同裝置的方法。可能包含重新對表單重新編頁,或將表單項目組合至功能表中的程式碼。
- 呈現表單基本架構的 Render 方法。例如,WML 架構的頁面配置器通常至少會呈現 <card> 的開頭與結尾標記。
文字寫入器類別
文字寫入器類別不是配置器纇別,而是繼承自 System.Web.UI.HtmlTextWriter 類別的類別。文字寫入器類別的執行個體為了加以呈現而建立,並傳遞每個配置器 -- 所有的呈現都透過此物件加以執行。文字寫入器通常包含 Helper 方法以執行如資料編碼之類的工作。