共用方式為


WML 配接器集

更新:2007 年 11 月

WML 配接器集是由多個類別所組成,這些類別可在支援 WML 1.1 或 WML 1.2 的用戶端上用來呈現 ASP.NET Mobile Web 網頁。部分方法和屬性可能未包含於本文件中。下表列出包含於 WML 配接器集的核心類別。

WML 裝置的配接器集

核心配置器類別命名空間

ControlAdapter 抽象基底類別

WmlControlAdapter

HtmlFormAdapter 類別

WmlFormAdapter

PageAdapter 抽象類別

WmlPageAdapter

MobileTextWriter 類別

WmlMobileTextWriter

Openwave Up.Browser 會使用不同的頁面配接器和文字寫入器。下表列出由支援這些瀏覽器之配接器集所使用的核心類別。

UP.Browser 的配接器集

核心配置器類別命名空間

ControlAdapter 抽象基底類別

WmlControlAdapter

HtmlFormAdapter 類別

WmlFormAdapter

PageAdapter 抽象類別

UpWmlPageAdapter

MobileTextWriter 類別

UpWmlMobileTextWriter

注意事項:

使用 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 屬性傳回 PreferredRenderingTypeWml11PreferredRenderingTypeWml12,便會選取 WML 配接器集。

適應性呈現

WML 配接器集可以根據 WML 架構式行動電話的各種功能,進行明顯的調整。因此,配接器集實際上會為每個表單及其子控制項呼叫兩次 Render 方法。第一次傳遞時,寫入器處於分析模式,並使用所有對它進行的呼叫來分析表單輸出。第二次傳遞時,才會真的呈現表單。

請避免建立會區分兩次傳遞的配接器。如果真有必要,您可以撰寫可透過核取 WmlMobileTextWriter 類別之 AnalyzeMode 屬性來存取目前模式的配接器。

預設呈現

下列步驟顯示 WML 配接器集內頁面和表單配接器類別的預設呈現。

頁面配接器會執行下列步驟:

  1. 呼叫寫入器的 BeginResponseBeginFile 方法。內容類型為 text/vnd.wap.wml。

  2. 寫出開頭 <wml> 標記。

  3. 呈現作用中表單。

  4. 如果可能,將連結表單呈現為相同 WML Deck 的一部分。

  5. 寫出結尾 </wml> 標記。

  6. 呼叫 EndFileEndResponse 方法。

表單配接器會執行下列步驟:

  1. 將寫入器設為分析模式。

  2. 呼叫寫入器的 BeginForm 方法。

  3. 呈現表單內容。其結果不會傳送至裝置,而會由寫入器進行分析。

  4. 呼叫寫入器的 EndForm 方法。

  5. 將寫入器設為連線模式。

  6. 呼叫寫入器的 BeginForm 方法。

  7. 呈現表單內容。

  8. 呼叫寫入器的 EndForm 方法。

使用樣式

WmlMobileTextWriter 類別提供數種可協助您使用樣式資訊來呈現內容的 Helper 方法:

  • EnterLayoutExitLayout 方法允許配接器使用指定樣式的段落格式,發出區塊的開頭和結尾標記。

  • EnterFormatExitFormat 方法允許配接器使用指定樣式的字元格式,發出區塊的開頭和結尾標記。

  • ResetFormattingState 方法允許配接器將格式狀態重設為預設狀態。

適應性呈現方法

WmlMobileTextWriter 類別提供數種高階的呈現方法,如下表所示。

WML 配接器必須使用這些方法來呈現內容,因為寫入器可以根據目標裝置的能力,自動以最佳方式調整輸出。

如需這些方法各個的詳細資料,請參閱 WmlMobileTextWriter 類別的文件。

寫入器方法

說明

RenderText

呈現文字項目。

RenderImage

呈現影像項目。

RenderTextBox

呈現文字輸入方塊項目。

RenderEndHyperlink

呈現超連結項目。

呼叫 RenderTextRenderImage 方法,呈現超連結內的文字或影像。

RenderBeginPostBack

RenderEndPostBack

呈現回傳項目。

呼叫 RenderTextRenderImage 方法,呈現回傳內的文字或影像。

RenderBeginSelect

RenderEndSelect

RenderSelectOption

呈現選擇清單項目。

呼叫 RenderSelectOption 方法,呈現選取清單中的每個選項。

AddFormVariable

加入要與表單一起呈現的變數和初始值。當 WML 裝置呈現此表單時,它會將變數初始化為指定的初始值。

此外,WmlControlAdapter 基底類別 (Base Class) 還提供數種較高階的方法,如下表所示。其中每一個方法都會使用先前所列的寫入器方法來進行呈現。

配接器方法

說明

RenderBeginLink

RenderEndLink

呈現連結。配接器會自動判斷如何呈現連結,將相同頁面上的表單連結呈現為回傳,並將其他連結呈現為超連結。

呼叫寫入器上的 RenderTextRenderImage 方法,呈現連結內文字或影像。

RenderLink

呈現具有內部文字的連結。

RenderPostBackEvent

呈現以控制項當做目標的回傳事件。

呈現功能表

在某些 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,控制項配接器會執行下列步驟:

  1. 為了回應某些使用者互動 (通常位於可覆寫的 HandlePostBackEvent 方法中),控制項配接器會設定 WmlControlAdapter 基底類別的 SecondaryUIMode 屬性以指定輔助 UI 模式。

  2. 在呈現過程中,控制項會檢查其是否處於輔助 UI 模式;如果是,便會呈現適當的輔助 UI。

  3. 為了回應來自輔助 UI 的使用者互動,控制項配接器可能會將輔助 UI 模式變更為其他的值,或是呼叫 WmlControlAdapter 基底類別的 ExitSecondaryUIMode 方法,以結束輔助 UI 模式。

額外功能

WML 裝置會公開 (Expose) 可用來變更呈現的額外功能。您可以透過 MobileCapabilities 類別的 HasCapability 方法來存取這些功能。

請參閱

概念

配接器集功能

參考

裝置能力表