更新 : 2007 年 11 月
複数のデバイスをサポートするため、ASP.NET モバイル Web ページのアーキテクチャはデバイス アダプタ モデルに基づいて構築されています。モバイル Web ページと ASP.NET モバイル コントロール自体はデバイスに依存しませんが、適切に選択されたデバイス アダプタのセットによって、モバイル ページやモバイル コントロールにデバイス固有のプレゼンテーション層が提供されます。
デバイス アダプタは、個々のコントロールとターゲット デバイスの組み合わせに関連付けられています。どのデバイスに対しても、各モバイル コントロール クラスはそれに関連付けられた固有のコントロール アダプタ クラスを持つことができ、コントロールの各インスタンスは、アダプタの対応するインスタンスに連結されています。
それぞれの種類のデバイスに応じて、以下のクラスを定義することができます。
コントロール アダプタの基本クラス。すべてのデバイス アダプタの継承元である基本クラスです。
ページ アダプタ。ページに関連付けられたアダプタです。
フォーム アダプタ。ページの各フォームに関連付けられたコントロール アダプタです。
コントロール アダプタ。システムのコントロールに対応するコントロール アダプタ クラスです。
テキスト ライタ。HtmlTextWriter クラスから継承し、ターゲット固有のヘルパー メソッドを含むクラスです。
原則として、ある機能にコントロールのコンテキストが必要な場合は、コントロールをコントロール アダプタの基本クラスに配置します。
次の表は、アダプタの種類と、各アダプタに対するデバイス固有の実装クラスの例の一覧です。
アダプタおよびクラスの種類 |
ASP.NET モバイル コントロールのクラス |
説明 |
---|---|---|
コントロール アダプタの基本クラス |
この基本クラスから継承したすべてのデバイス アダプタ |
|
ページ アダプタ |
ページに関連付けられたコントロール アダプタ |
|
フォーム アダプタ |
ページの各フォームに関連付けられたコントロール アダプタ |
|
コントロール アダプタ |
システムのコントロールに対応するコントロール アダプタ クラス |
|
テキスト ライタ |
HtmlTextWriter から継承し、ターゲット固有のヘルパー メソッドを含むクラス |
コントロール アダプタの基本クラス
デバイス アダプタの各セットには、通常、そのセットにあるすべてのアダプタの基本クラスが含まれています。ControlAdapter 基本クラスは、そのデバイス クラスに固有の、一般的に使用される機能を提供します。通常、この機能はコントロールまたはページのコンテキストを必要とするヘルパ メソッドで構成されています。これらのヘルパ メソッドには、以下のものが含まれています。
コントロールのポストバック イベントをレンダリングするメソッド。
コントロールのスタイル プロパティをレンダリングするメソッド。スタイル プロパティは各デバイスに応じて異なる処理が行われるため、各アダプタには異なるスタイルのレンダリングが実装されています。
ASP.NET ページ フレームワーク、または含まれているページやフォームのアダプタにデバイス固有の情報を提供する、オーバーライド可能なメソッド。
含まれているページまたはフォームのアダプタにアクセスするプロパティ。
使用するコントロール アダプタの基本クラスは、一般的な基本クラスである ControlAdapter クラスからも継承することをお勧めします。このクラスは、すべてのアダプタに必要な IControlAdapter インターフェイスの既定の実装を提供します。この基本クラスがレンダリングを既定で実装しているため、すべての子コントロールをレンダリングすることをお勧めします。これにより、この基本クラスを複合コントロール用のアダプタとして使用できます。
ページ アダプタ クラス
デバイス アダプタの各セットには、モバイル ページに関連付けられたページ アダプタ クラスがあります。モバイル ページの各インスタンス、または MobilePage オブジェクトから継承した各ページ クラスは、ターゲット デバイス固有のページ アダプタに関連付けられています。通常、ページ アダプタには以下のものが含まれています。
デバイス固有のポストバックおよび ViewState 機能。
改ページ調整の情報などの、デバイス固有のコントロールの状態を保存したり、読み込んだりするメソッド。
クライアントに戻される応答を準備する初期化コード。これには、応答の MIME タイプを適切な形式に設定する処理が含まれます。
クライアントに戻されるページのスケルトンをレンダリングする Render メソッド。たとえば、HTML ベースのページ アダプタは、通常は少なくとも <html> 開始タグおよび終了タグをレンダリングします。
単一の応答で複数のページを返す機能をサポートするデバイスのページ アダプタのアセンブリを行うような、デバイスに固有のページ レベルのほかの機能。
ページ アダプタ クラスは、IPageAdapter インターフェイスの完全な実装を提供する必要があります。一般的に、記述したページ アダプタ クラスは適切なコントロール アダプタ クラスからも継承することが必要です。たとえば、WML ベースのデバイス専用に記述する場合は、WmlControlAdapter クラスから継承することになります。アダプタ クラスの詳細については、「デバイス アダプタ コード」を参照してください。
フォーム アダプタ クラス
デバイス アダプタの各セットには、Form クラスに関連付けられたフォーム アダプタ クラスもあります。フォームの各インスタンスは、ターゲット デバイスに固有のフォーム アダプタに連結されています。通常、フォーム アダプタには以下のものが含まれています。
デバイス固有のフォームを対話形式で処理するメソッド。
1 つのフォームを別のデバイスに適合させる処理を行うメソッド。これには、フォームの改ページ調整を行ったり、フォームの要素をメニューに結合したりするコードが含まれることがあります。
フォームのスケルトンをレンダリングする Render メソッド。たとえば、WML ベースのページ アダプタは、通常は少なくとも <card> 開始タグおよび終了タグをレンダリングします。
テキスト ライタ クラス
テキスト ライタ クラスはアダプタ クラスではありません。正確には、System.Web.UI.HtmlTextWriter クラスから継承したクラスです。テキスト ライタ クラスのインスタンスは、レンダリングのために各アダプタを通じて作成されて渡されます。つまり、すべてのレンダリングはこのオブジェクトを通じて実行されます。通常、テキスト ライタにはデータのエンコードなどのタスクを実行するヘルパー メソッドが含まれています。