更新 : 2007 年 11 月
WML アダプタ セットは、WML v1.1 または v1.2 をサポートするクライアントでの、ASP.NET モバイル Web ページのレンダリングに使用できるクラスで構成されています。このドキュメントには、一部のメソッドとプロパティが含まれていない場合があります。次の表は、WML アダプタ セットに含まれているコア クラスの一覧です。
WML デバイスのアダプタ セット |
コア アダプタ クラスの名前空間 |
---|---|
ControlAdapter 抽象基本クラス |
|
HtmlFormAdapter クラス |
|
PageAdapter 抽象クラス |
|
MobileTextWriter クラス |
Openwave UP.Browser は、別のページ アダプタとテキスト ライタを使用します。次の表は、これらのブラウザをサポートするアダプタ セットで使用されるコア クラスの一覧です。
UP.Browser のアダプタ セット |
コア アダプタ クラスの名前空間 |
---|---|
ControlAdapter 抽象基本クラス |
|
HtmlFormAdapter クラス |
|
PageAdapter 抽象クラス |
|
MobileTextWriter クラス |
![]() |
---|
UP.Browser 4.1 または UP.Browser 3.2 では、Redirect メソッドは常に、HttpBrowserCapabilities オブジェクトの SupportsRedirectWithCookie プロパティの値が false に設定されている場合のように動作します。ただし、Web.config にある SessionState セクションの Cookieless プロパティが明示的に true に設定されている場合を除きます。 ASP.NET 1.1 では、この設定のオプションは true または false でしたが、ASP.NET 2.0 では選択肢が増え、現在は AutoDetect が既定の設定になっています。使用している Web アプリケーションの Web.config にある <sessionState> セクションの cookieless 属性がブール値に設定されている場合、Redirect メソッドはこれらのブラウザに対して有効に機能します。 |
選択
WML アダプタ セットが選択されるのは、MobileCapabilities クラスの PreferredRenderingType プロパティが PreferredRenderingTypeWml11 または PreferredRenderingTypeWml12 を返す場合です。
アダプティブ レンダリング
WML アダプタ セットには、WML ベースの携帯電話のさまざまな機能に、容易に適応する機能があります。このため、アダプタ セットは実際に、各フォームとその子コントロールのために Render メソッドを 2 回呼び出します。最初のパスでは、ライタは分析モードで動作し、ライタへのすべての呼び出しを使用してフォーム出力を分析します。2 番目のパスでは、実際にフォームのレンダリングが行われます。
パスを区別するアダプタの作成は避けてください。どうしても必要な場合は、WmlMobileTextWriter クラスの AnalyzeMode プロパティを調べることによって、現在のモードにアクセスするアダプタを作成できます。
既定のレンダリング
以下の手順は、WML アダプタ セットでの、ページとフォームのアダプタ クラスの既定のレンダリングを示したものです。
ページ アダプタは次の手順を実行します。
ライタの BeginResponse メソッドと BeginFile メソッドを呼び出します。コンテンツの種類は text/vnd.wap.wml になります。
開始の <wml> タグを書き出します。
アクティブ フォームをレンダリングします。
可能な場合は、リンクされたフォームを同じ WML デッキの一部としてレンダリングします。
終了の </wml> タグを書き出します。
EndFile メソッドと EndResponse メソッドを呼び出します。
フォーム アダプタは次の手順を実行します。
ライタを分析モードに設定します。
ライタの BeginForm メソッドを呼び出します。
フォーム コンテンツをレンダリングします。結果はデバイスに送信されず、ライタによって分析されます。
ライタの EndForm メソッドを呼び出します。
ライタをライブ モードに設定します。
ライタの BeginForm メソッドを呼び出します。
フォーム コンテンツをレンダリングします。
ライタの EndForm メソッドを呼び出します。
スタイルの使用
WmlMobileTextWriter クラスには、コンテンツをレンダリングするためにスタイル情報を使用するときに役立つ、数多くのヘルパー メソッドが用意されています。
EnterLayout メソッドと ExitLayout メソッドを使用すると、アダプタでマークアップを生成して、特定のスタイルの段落書式でブロックを開始および終了できます。
EnterFormat メソッドと ExitFormat メソッドを使用すると、アダプタでマークアップを生成して、特定のスタイルの文字書式でブロックを開始および終了できます。
ResetFormattingState メソッドを使用すると、アダプタで書式状態を既定の状態にリセットできます。
アダプティブ レンダリング メソッド
WmlMobileTextWriter クラスは、次の表に示すように、レンダリング用の高度なメソッドを数多く用意しています。
ライタはターゲット デバイスの機能に基づき、自動的に出力を最適な方法で適合させることができるので、WML アダプタはこれらのメソッドを使用してコンテンツをレンダリングする必要があります。
これらの各メソッドの詳細については、WmlMobileTextWriter クラスのドキュメントを参照してください。
ライタ メソッド |
説明 |
---|---|
テキスト要素をレンダリングします。 |
|
イメージ要素をレンダリングします。 |
|
テキスト入力ボックス要素をレンダリングします。 |
|
ハイパーリンク要素をレンダリングします。 RenderText メソッドまたは RenderImage メソッドを呼び出して、ハイパーリンク内部のテキストやイメージをレンダリングします。 |
|
ポストバック要素をレンダリングします。 RenderText メソッドまたは RenderImage メソッドを呼び出して、ポストバック内部のテキストやイメージをレンダリングします。 |
|
選択一覧要素をレンダリングします。 RenderSelectOption メソッドを呼び出して、選択一覧の各オプションをレンダリングします。 |
|
フォームと共にレンダリングする変数と初期値を追加します。WML デバイスがフォームをレンダリングするときには、指定された初期値に変数を初期化します。 |
また、WmlControlAdapter 基本クラスは、次の表に示すように、高度なメソッドを数多く用意しています。これらの各メソッドは、前述のライタ メソッドを使用してレンダリングします。
アダプタ メソッド |
説明 |
---|---|
リンクをレンダリングします。アダプタはリンクのレンダリング方法を自動的に決定し、同じページ上にあるフォームへのリンクはポストバックとしてレンダリングし、その他のリンクはハイパーリンクとしてレンダリングします。 リンク内部のテキストやイメージをレンダリングするには、ライタの RenderText メソッドまたは RenderImage メソッドを呼び出します。 |
|
内部テキスト付きのリンクをレンダリングします。 |
|
コントロールをターゲットとするポストバック イベントをレンダリングします。 |
メニューのレンダリング
一部の WML ベースのデバイスでは、複数のリンクやアンカーで構成されたフォームは、<select> 要素および <option> 要素を使用して、項目のメニューとしてレンダリングする方法が適しています。これにより、自動的に生成されるキーパッド ナビゲーション UI がメニューに付加されます。Openwave UP.Browser は、このようなデバイスの例です。
WML フォーム アダプタがフォームをメニューとしてレンダリングできるのは、静的テキストとしてレンダリングされる (0 または 1 つ以上の) コントロールからフォームが構成され、しかも <select> 要素と <option> 要素をレンダリングできるコントロールが後に続く場合です。
MobileCapabilities クラスの RendersWmlSelectsAsMenuCards プロパティが true に設定されている場合は、デバイス側で <select> 要素をコンボ ボックスではなくメニュー カードとしてレンダリングできます。
複数のフォームを個々のカードとして格納するデッキをブラウザで処理できる場合、CanCombineFormsInDeck プロパティは true に設定されます。アダプタは、同じページに属する複数のフォームを、カードとして 1 つのデッキにまとめて出力することができます。
フォーム受け付けコンロトールのレンダリング
レンダリングされたフォームがフォームをサーバーに返信するための UI を持っている場合、一部の WML ベースのデバイスでは、指定されたデバイスの UI を、フォームの先頭で <do> 要素として設定する必要があります。Openwave UP.Browser は、このようなデバイスの例です。
デバイスで UI が <do> 要素を使用する必要がある場合、フォームのコントロールが送信 UI を要求するかどうか、またコントロールがそのような UI を用意しているかどうかをフォーム アダプタが調べます。これを決定するために、フォーム アダプタはフォーム上の各コントロールのアダプタにクエリを実行します。
ソフトキー用のレンダリング
一部のコントロールは、WML ベースのデバイスのソフトキーにマッピング可能な UI をレンダリングします。デバイス側で WML の <do> 要素がソフトキーとしてではなくインライン ボタンとしてレンダリングされる場合、MobileCapabilities クラスの RendersWmlDoAcceptsInline プロパティは true に設定されます。
セカンダリ UI
WML アダプタ セットは、コントロールでユーザー インターフェイスの追加画面を表示するときに使用するセカンダリ UI をサポートします。セカンダリ UI を使用するには、コントロール アダプタは次の手順を実行します。
ユーザーとの対話型操作 (通常はオーバーライド可能な HandlePostBackEvent メソッドを使用) に応答して、コントロール アダプタは、WmlControlAdapter 基本クラスの SecondaryUIMode プロパティを設定することにより、セカンダリ UI モードを指定します。
レンダリングの際に、コントロールはセカンダリ UI モードであるかどうかを調べ、そのモードの場合は適切なセカンダリ UI をレンダリングします。
セカンダリ UI からのユーザーとの対話型操作に応答して、コントロール アダプタはセカンダリ UI モードを他の値に変更したり、WmlControlAdapter 基本クラスの ExitSecondaryUIMode メソッドを呼び出して、セカンダリ UI モードを終了したりする場合などがあります。
追加機能
WML デバイスは、レンダリングの変更に使用可能な追加機能を公開しています。これらの機能には、MobileCapabilities クラスの HasCapability メソッドを通じてアクセスできます。