次の方法で共有


ControlAdapter クラス

定義

既定のマークアップ、または特定のブラウザーに対する動作を変更するために、アダプターの割り当て先の派生コントロールの表示をカスタマイズします。すべてのコントロール アダプターの継承元となる基本クラスです。

public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
継承
ControlAdapter
派生

注釈

コントロール アダプターは、ブラウザーまたはマークアップ固有の処理を可能にするために、実行ライフサイクル内の特定 Control のクラス メソッドとイベントをオーバーライドするコンポーネントです。 .NET Frameworkは、クライアント要求ごとに 1 つの派生コントロール アダプターを Control オブジェクトにマップします。

アダプターは、特定のブラウザーまたはブラウザーのクラスのコントロールを変更するか、機能によっては任意のフィルターとして機能します。 通常、アダプターはブラウザーで使用されるマークアップ言語 (XHTML や HTML 3.2 など) によって定義されます。 レンダリング動作の適応性の多くは、 クラスから派生した特殊なクラスに HtmlTextWriter カプセル化できます。 したがって、1 つのアダプターを多数のブラウザー クラスの動作に使用できる場合や、クラスに適応性 HtmlTextWriter を含めると、コントロール アダプターの使用が不要になる可能性があります。

コントロール クラスのアダプターは、より特殊なアダプターが存在しない限り、そのクラスから継承するすべてのコントロールに適用されます。 たとえば、 クラスのアダプターを BaseValidator すべての Validator オブジェクトに使用できます。

アダプターは通常、 クラスから直接継承するのではなく、コントロールの種類とターゲット ブラウザーまたは必要な特定のレンダリングに固有の追加機能を提供するターゲット固有のアダプター基本クラスのいずれかから ControlAdapter 継承します。

コントロール自体に必ずしもアダプターが必要であるとは限りません。 コンポジションを通じてコントロールが拡張される場合は、通常、子コントロール アダプターで十分です。

各コントロールには、.browser 定義ファイルを介したアダプターへの明示的なマッピングがあります。 したがって、 プロパティへの Control.Adapter アクセスでは、ブラウザー定義ファイルから抽出された オブジェクトを使用 HttpBrowserCapabilities して、制御するアダプターのマッピングの検索を実行します。

処理中、.NET Frameworkは、ターゲット固有の可能性があるコントロールのオーバーライド可能なメソッドの呼び出しをインターセプトします。 コントロール アダプターが接続されている場合、.NET Frameworkは関連付けられているアダプター メソッドを呼び出します。

アダプターは、 メソッドを使用してコントロールのレンダリングを Render 実行します。 オーバーライドされた場合は、 Render メソッドに対してコールバック Control.Render を実行するため、基底クラスの実装を呼び出さないでください。 これにより、レンダリングがアダプターによって 1 回、コントロールによって 1 回、2 回発生する可能性があります。

基本メソッドは Render 、 コントロールの メソッドを Control.Render 呼び出します。 したがって、 をオーバーライド Renderする場合は、 コントロールによって Control.Render 提供されるレンダリングに加えて、実装するレンダリングが である場合を除き、基底クラスの実装を呼び出さないでください。

子コントロールのアダプターに対して.NET Frameworkがインターセプトを実行していることを確認する必要があります。 これを行うには、オーバーライドからコントロールの メソッドをRenderChildren呼び出す基本メソッドをRender呼び出Control.RenderChildrenします。

BeginRenderメソッドと EndRender メソッドは、コントロールが メソッドを呼び出す直前と直後 (それぞれ) によって呼び出Renderされます。 事前レンダリングとポストレンダリングが必要な唯一のブラウザー固有の処理タスクである場合は、 と EndRender を使用BeginRenderすると、 をオーバーライドRenderする必要が生じない場合があります。 メソッドと EndRender メソッドの既定のBeginRender動作では、 の対応するメソッドをHtmlTextWriter呼び出します。

コントロール アダプターは、独自の状態情報を維持するために、、LoadAdapterControlStateSaveAdapterViewState、および の各メソッドをSaveAdapterControlStateLoadAdapterViewStateオーバーライドできます。 SaveAdapterControlStateSaveAdapterViewStateLoadAdapterControlState、および LoadAdapterViewState は、プライベート コントロールとビューの状態がそれぞれ保存および読み込まれるときに呼び出されます。

、、、および OnUnload 基本メソッドはOnInit、対応するControlクラス メソッドでコールバックOnPreRenderOnLoadします。 したがって、オーバーライドされるこれらの ControlAdapter メソッドは、基本メソッドを呼び出す必要があります。それ以外の場合、クラス メソッドに Control 関連付けられているイベントは発生しません。

コントロールとアダプターは、必要に応じて インターフェイスと IPostBackEventHandler インターフェイスをIPostBackDataHandler実装します。 .NET Frameworkは、アダプターが存在するかどうか、およびアダプターがこれらのインターフェイスを実装するかどうかを決定します。 その場合、アダプターは、必要に LoadPostData応じて、、 RaisePostDataChangedEvent、および RaisePostBackEvent の各メソッドをオーバーライドする必要があります。 ポストバック データがアダプターで認識されない場合は、コントロールを呼び出して処理する必要があります。 後続のイベント ハンドラーも、コントロールでコールバックする必要があります。

注意 (実装者)

クラスから ControlAdapter 継承する場合、一般的なアダプター機能を必要とするコントロールには、 パターン ControlTypeAdapter で という名前の対応するアダプター基本クラスが必要です (例: TextBoxAdapter)。 アダプターは、少なくとも、そのプロパティを通じて Control コントロールの厳密に型指定されたインスタンスを返す必要があります。

  1. 特定のコントロール型とマークアップ言語のコントロール アダプターには、 XhtmlTextBoxAdapterパターンMarkupControlTypeAdapterで という名前を付ける必要があります (例: )。 コントロールのアダプターは、サブ名前空間に実装する Adapters 必要があります。

コントロール アダプターは、適切な基底クラスから継承し、コントロールと同じ継承モデルに従う必要があります。 たとえば、基底クラスから継承するコントロールのControlアダプターは、 クラスまたは関連ControlTypeAdapterするクラスからControlAdapter継承する必要があります。

特殊化されたアダプターは、構成 .browser ファイル内のすべてのデバイス ノードの特殊化されたコントロールに対して定義する必要があります。

適切に実装されたコントロールでは、アダプターが接続されていること、または接続されているアダプターが特定のインターフェイスを実装していることを想定しないでください。 代わりに、 を呼び出す前に、これらを確認する必要があります。

の メソッドなど、コントロール内の保護されたイベント メソッドのオーバーライドをOnClick(EventArgs)LinkButtonシミュレートできます。 まず、 メソッドを使用してアダプター クラスを OnClick 作成します。 次に、 から LinkButton 派生した新しいコントロールを作成し、 メソッドをオーバーライドします OnClick(EventArgs) 。 オーバーライドされた OnClick(EventArgs) メソッドは、アダプターの OnClick メソッドを呼び出します。 アダプター オブジェクトは、 クラスの保護された Adapter プロパティを Control 使用して使用できます。 コントロールの プロパティは Adapternull 関連付けられたアダプターがない場合です。そのため、コードはアダプターのメソッドを呼び出す前に、その条件を確認する必要があります。

コンストラクター

ControlAdapter()

ControlAdapter クラスの新しいインスタンスを初期化します。

プロパティ

Browser

現在の HTTP 要求の作成元であるクライアントのブラウザー機能への参照を取得します。

Control

このコントロール アダプターの割り当て先コントロールへの参照を取得します。

Page

このアダプターに関連付けられたコントロールが配置されているページへの参照を取得します。

PageAdapter

関連付けられたコントロールが配置されているページのページ アダプターへの参照を取得します。

メソッド

BeginRender(HtmlTextWriter)

コントロールの表示前に呼び出されます。 派生アダプター クラスで、HTML ブラウザーには必要ではなくても特定のターゲットには必要な開始タグを生成します。

CreateChildControls()

複合コントロールのターゲット固有の子コントロールを作成します。

EndRender(HtmlTextWriter)

コントロールの表示後に呼び出されます。 派生アダプター クラスで、HTML ブラウザーには必要ではなくても特定のターゲットには必要な終了タグを生成します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
LoadAdapterControlState(Object)

このコントロール アダプターに関連付けられたコントロールが配置されているページに対する以前の要求時に SaveAdapterControlState() によって保存された、アダプターのコントロール状態情報を読み込みます。

LoadAdapterViewState(Object)

このコントロール アダプターに関連付けられたコントロールが配置されているページに対する以前の要求時に SaveAdapterViewState() によって保存された、アダプターのビューステートを読み込みます。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnInit(EventArgs)

関連付けられたコントロールの OnInit(EventArgs) メソッドをオーバーライドします。

OnLoad(EventArgs)

関連付けられたコントロールの OnLoad(EventArgs) メソッドをオーバーライドします。

OnPreRender(EventArgs)

関連付けられたコントロールの OnPreRender(EventArgs) メソッドをオーバーライドします。

OnUnload(EventArgs)

関連付けられたコントロールの OnUnload(EventArgs) メソッドをオーバーライドします。

Render(HtmlTextWriter)

コントロール アダプターがアタッチされるコントロール用にターゲット固有のマークアップを生成します。

RenderChildren(HtmlTextWriter)

コントロール アダプターの割り当て先である複合コントロールに含まれる子コントロールのターゲット固有のマークアップを生成します。

SaveAdapterControlState()

コントロール アダプターのコントロール状態情報を保存します。

SaveAdapterViewState()

コントロール アダプターのビューステート情報を保存します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください