更新:2007 年 11 月
WML 配接器集是由多個類別所組成,這些類別可在支援 WML 1.1 或 WML 1.2 的用戶端上用來呈現 ASP.NET Mobile Web 網頁。部分方法和屬性可能未包含於本文件中。下表列出包含於 WML 配接器集的核心類別。
WML 裝置的配接器集 |
核心配置器類別命名空間 |
|---|---|
ControlAdapter 抽象基底類別 |
|
PageAdapter 抽象類別 |
|
Openwave Up.Browser 會使用不同的頁面配接器和文字寫入器。下表列出由支援這些瀏覽器之配接器集所使用的核心類別。
UP.Browser 的配接器集 |
核心配置器類別命名空間 |
|---|---|
ControlAdapter 抽象基底類別 |
|
PageAdapter 抽象類別 |
|
注意事項: |
|---|
使用 UP.Browser 4.1 或 UP.Browser 3.2 時,除非 Web.config 之 SessionState 區段中的 Cookieless 屬性已明確設定為 true,否則 Redirect 方法的行為永遠都會像是 HttpBrowserCapabilities 物件的 SupportsRedirectWithCookie 屬性值為 false。 在 ASP.NET 1.1 中,這項設定的選項是 true 或 false,但是 ASP.NET 2.0 已經增加了這類選項,現在 AutoDetect 是預設值。如果您的 Web 應用程式已將 Web.config 中 <sessionState> 區段的 cookieless 屬性 (Attribute) 設定為布林值 (Boolean),Redirect 方法便會如預期般地配合這些瀏覽器運作。 |
選取範圍
如果 MobileCapabilities 類別的 PreferredRenderingType 屬性傳回 PreferredRenderingTypeWml11 或 PreferredRenderingTypeWml12,便會選取 WML 配接器集。
適應性呈現
WML 配接器集可以根據 WML 架構式行動電話的各種功能,進行明顯的調整。因此,配接器集實際上會為每個表單及其子控制項呼叫兩次 Render 方法。第一次傳遞時,寫入器處於分析模式,並使用所有對它進行的呼叫來分析表單輸出。第二次傳遞時,才會真的呈現表單。
請避免建立會區分兩次傳遞的配接器。如果真有必要,您可以撰寫可透過核取 WmlMobileTextWriter 類別之 AnalyzeMode 屬性來存取目前模式的配接器。
預設呈現
下列步驟顯示 WML 配接器集內頁面和表單配接器類別的預設呈現。
頁面配接器會執行下列步驟:
呼叫寫入器的 BeginResponse 和 BeginFile 方法。內容類型為 text/vnd.wap.wml。
寫出開頭 <wml> 標記。
呈現作用中表單。
如果可能,將連結表單呈現為相同 WML Deck 的一部分。
寫出結尾 </wml> 標記。
呼叫 EndFile 和 EndResponse 方法。
表單配接器會執行下列步驟:
將寫入器設為分析模式。
呼叫寫入器的 BeginForm 方法。
呈現表單內容。其結果不會傳送至裝置,而會由寫入器進行分析。
呼叫寫入器的 EndForm 方法。
將寫入器設為連線模式。
呼叫寫入器的 BeginForm 方法。
呈現表單內容。
呼叫寫入器的 EndForm 方法。
使用樣式
WmlMobileTextWriter 類別提供數種可協助您使用樣式資訊來呈現內容的 Helper 方法:
EnterLayout 和 ExitLayout 方法允許配接器使用指定樣式的段落格式,發出區塊的開頭和結尾標記。
EnterFormat 和 ExitFormat 方法允許配接器使用指定樣式的字元格式,發出區塊的開頭和結尾標記。
ResetFormattingState 方法允許配接器將格式狀態重設為預設狀態。
適應性呈現方法
WmlMobileTextWriter 類別提供數種高階的呈現方法,如下表所示。
WML 配接器必須使用這些方法來呈現內容,因為寫入器可以根據目標裝置的能力,自動以最佳方式調整輸出。
如需這些方法各個的詳細資料,請參閱 WmlMobileTextWriter 類別的文件。
寫入器方法 |
說明 |
|---|---|
呈現文字項目。 |
|
呈現影像項目。 |
|
呈現文字輸入方塊項目。 |
|
呈現超連結項目。 呼叫 RenderText 或 RenderImage 方法,呈現超連結內的文字或影像。 |
|
呈現回傳項目。 呼叫 RenderText 或 RenderImage 方法,呈現回傳內的文字或影像。 |
|
呈現選擇清單項目。 呼叫 RenderSelectOption 方法,呈現選取清單中的每個選項。 |
|
加入要與表單一起呈現的變數和初始值。當 WML 裝置呈現此表單時,它會將變數初始化為指定的初始值。 |
此外,WmlControlAdapter 基底類別 (Base Class) 還提供數種較高階的方法,如下表所示。其中每一個方法都會使用先前所列的寫入器方法來進行呈現。
配接器方法 |
說明 |
|---|---|
呈現連結。配接器會自動判斷如何呈現連結,將相同頁面上的表單連結呈現為回傳,並將其他連結呈現為超連結。 呼叫寫入器上的 RenderText 或 RenderImage 方法,呈現連結內文字或影像。 |
|
呈現具有內部文字的連結。 |
|
呈現以控制項當做目標的回傳事件。 |
呈現功能表
在某些 WML 架構裝置上,由多個連結或錨點所組成的表單最好是呈現為使用 <select> 和 <option> 等項目的項目功能表,以及自動產生的數字鍵台巡覽使用者介面 (UI)。Openwave UP.Browser 就是這類裝置的範例。
如果表單是由零或多個呈現為靜態文字的控制項所組成,而這些控制項之後又有一個或多個可呈現 <select> 和 <option> 項目的控制項,WML 表單配接器即可將表單呈現為功能表。
如果 MobileCapabilities 類別的 RendersWmlSelectsAsMenuCards 屬性設定為 true,裝置即可將 <select> 項目呈現為功能表式的 Card,而非下拉式方塊形式。
如果瀏覽器可以將包含多個表單的 Deck 當做個別的 Card 來處理,CanCombineFormsInDeck 屬性便會設定為 true。配接器可以將相同頁面的多個表單,輸出為單一 Deck 的 Card。
呈現表單接受控制項
當所呈現表單包含將表單送回伺服器的 UI 時,某些 WML 架構的裝置會要求所指定裝置的 UI 成為表單開頭的 <do> 項目。Openwave UP.Browser 就是這類裝置的範例。
當裝置要求 UI 使用 <do> 項目時,表單配接器便會檢查表單上是否有任何控制項需要送出 UI,以及是否有任何控制項可提供這類 UI。為了進行這些判斷,表單配接器會查詢表單上每個控制項的配接器。
呈現螢幕鍵盤
某些控制項會呈現可對應到 WML 架構裝置之螢幕鍵盤的 UI。如果裝置將 WML <do> 項目呈現為內嵌 (Inline) 按鈕而非螢幕鍵盤,MobileCapabilities 類別的 RendersWmlDoAcceptsInline 屬性便會設定 true。
輔助 UI
WML 配接器集支援可由控制項用來顯示使用者介面之額外畫面的「輔助 UI」(Secondary UI)。若要使用輔助 UI,控制項配接器會執行下列步驟:
為了回應某些使用者互動 (通常位於可覆寫的 HandlePostBackEvent 方法中),控制項配接器會設定 WmlControlAdapter 基底類別的 SecondaryUIMode 屬性以指定輔助 UI 模式。
在呈現過程中,控制項會檢查其是否處於輔助 UI 模式;如果是,便會呈現適當的輔助 UI。
為了回應來自輔助 UI 的使用者互動,控制項配接器可能會將輔助 UI 模式變更為其他的值,或是呼叫 WmlControlAdapter 基底類別的 ExitSecondaryUIMode 方法,以結束輔助 UI 模式。
額外功能
WML 裝置會公開 (Expose) 可用來變更呈現的額外功能。您可以透過 MobileCapabilities 類別的 HasCapability 方法來存取這些功能。
注意事項: