ControlAdapter クラス

定義

既定のマークアップ、または特定のブラウザーに対する動作を変更するために、アダプターの割り当て先の派生コントロールの表示をカスタマイズします。すべてのコントロール アダプターの継承元となる基本クラスです。Customizes rendering for the derived control to which the adapter is attached, to modify the default markup or behavior for specific browsers, and is the base class from which all control adapters inherit.

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

注釈

コントロールアダプターは、特定の Control クラスメソッドとその実行ライフサイクル内のイベントをオーバーライドして、ブラウザーやマークアップ固有の処理を可能にするコンポーネントです。Control adapters are components that override certain Control class methods and events in its execution lifecycle to allow browser or markup-specific handling. .NET Framework は、1つの派生コントロールアダプターを Control クライアント要求ごとにオブジェクトにマップします。The .NET Framework maps a single derived control adapter to a Control object for each client request.

アダプターは、ブラウザーの特定のブラウザーまたはクラスのコントロールを変更するか、一部の機能に対して任意のフィルターとして機能します。An adapter modifies a control for a specific browser or class of browsers or acts as an arbitrary filter on some capability. 通常、アダプターは、ブラウザーが使用するマークアップ言語 (XHTML、HTML 3.2 など) によって定義されます。Typically the adapter is defined by the markup language that the browser uses (for example, XHTML or HTML 3.2). レンダリング動作の適応性の多くは、クラスから派生した特殊なクラスにカプセル化でき HtmlTextWriter ます。Much of the adaptability in rendering behavior can be encapsulated in the specialized classes that derive from the HtmlTextWriter class. したがって、多くのブラウザークラスの動作で1つのアダプターが使用される可能性があります。また、クラスに適応性が含まれていると、 HtmlTextWriter コントロールアダプターを使用する必要がなくなります。Therefore, it is likely that a single adapter can be used for a number of browser class behaviors or that inclusion of the adaptability in the HtmlTextWriter classes could make the use of a control adapter unnecessary.

コントロールクラスのアダプターは、特化されたアダプターが存在しない限り、そのクラスから継承されるすべてのコントロールに適用されます。An adapter for a control class applies to all controls that inherit from that class, unless more specialized adapters are present. たとえば、クラスのアダプターは、 BaseValidator すべてのオブジェクトに対して使用でき Validator ます。For example, an adapter for the BaseValidator class can be used for all Validator objects.

通常、アダプターはクラスから直接継承 ControlAdapter しませんが、ターゲット固有のアダプター基底クラスの1つから、コントロールの種類とターゲットブラウザーに固有の追加機能を提供するか、必要なレンダリングを指定します。Adapters typically do not inherit directly from the ControlAdapter class, but from one of the target-specific adapter base classes that provide additional functionality specific to the control type and target browser or the particular rendering required.

コントロール自体は、必ずしもアダプターを必要としません。Controls themselves do not necessarily require an adapter. コントロールがコンポジションによって拡張されている場合、一般に子コントロールアダプターで十分です。If controls are extended through composition, generally the child control adapters are sufficient.

各コントロールには、ブラウザー定義ファイルを介してアダプターへの明示的なマッピングがあります。Each control has explicit mappings to adapters through the .browser definition files. このため、プロパティへのアクセスでは、 Control.Adapter ブラウザー定義ファイルから抽出されたオブジェクトを使用して、 HttpBrowserCapabilities アダプターが制御するマッピングの参照を実行します。Thus, any access to the Control.Adapter property uses the HttpBrowserCapabilities object extracted from the browser definition files to perform the lookup for the mapping of the adapter to control.

処理中、.NET Framework は、ターゲット固有である可能性があるコントロールのオーバーライド可能なメソッドへの呼び出しをインターセプトします。During processing, the .NET Framework intercepts calls to the overridable methods of a control that could be target-specific. コントロールアダプターがアタッチされている場合、.NET Framework は、関連付けられているアダプターメソッドを呼び出します。If a control adapter is attached, the .NET Framework calls the associated adapter methods.

アダプターは、メソッドを使用してコントロールのレンダリングを実行し Render ます。The adapter performs rendering for the control through the Render method. オーバーライドされた場合、は Render メソッドでコールバックを実行するため、基底クラスの実装を呼び出さないようにする必要があり Control.Render ます。If overridden, Render potentially should not call the base class implementation because that performs a call back on the Control.Render method. これにより、アダプターによって1回、コントロールによってレンダリングが2回発生する可能性があります。This might cause the rendering to occur twice, once by the adapter and once by the control.

Render基本メソッドは、コントロールのメソッドをコールバックし Control.Render ます。The Render base method calls back on the Control.Render method of the control. したがって、をオーバーライドする場合は、 Render 実装するレンダリングがコントロールのによって提供されるものに加えられていない限り、基本クラスの実装を呼び出さないでください Control.RenderThus, if you override Render, you should not call the base class implementation unless the rendering you implement is in addition to that provided by Control.Render of the control.

.NET Framework が子コントロールのアダプターに対してインターセプトを実行するようにする必要があります。You must ensure that the .NET Framework performs interception for adapters of the child controls. これを行うには、 RenderChildren Control.RenderChildren オーバーライドから、コントロールのメソッドを呼び出す基本メソッドを呼び出します RenderYou can do this by calling the RenderChildren base method, which calls the Control.RenderChildren method of the control, from your Render override.

BeginRenderメソッドと EndRender メソッドは、コントロールがメソッドを呼び出す前後に、コントロールによって呼び出され Render ます。The BeginRender and EndRender methods are called by the control immediately before and after (respectively) the control calls the Render method. レンダリング前とレンダリング後の処理タスクのみが必要な場合は、とを使用すると、の BeginRender EndRender オーバーライドが不要になることがあり Render ます。If pre- and post-rendering are the only browser-specific processing tasks required, using BeginRender and EndRender might make it unnecessary to override Render. メソッドとメソッドの既定の動作で BeginRender EndRender は、の対応するメソッドを呼び出し HtmlTextWriter ます。The default behavior of the BeginRender and EndRender methods is to call the corresponding methods of the HtmlTextWriter.

独自の状態情報を保持するために、コントロールアダプターは、、、およびの各メソッドをオーバーライドでき SaveAdapterControlState LoadAdapterControlState SaveAdapterViewState LoadAdapterViewState ます。To maintain its own state information, a control adapter can override the SaveAdapterControlState, LoadAdapterControlState, SaveAdapterViewState, and LoadAdapterViewState methods. SaveAdapterControlStateSaveAdapterViewStateLoadAdapterControlState 、および LoadAdapterViewState は、プライベートコントロールとビューステートがそれぞれ保存および読み込みされるときに呼び出されます。SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState, and LoadAdapterViewState are called when the private control and view states are saved and loaded, respectively.

OnInit、、 OnLoad OnPreRender 、およびの OnUnload 各基本メソッドは、対応するクラスメソッドに対してコールバックし Control ます。The OnInit, OnLoad, OnPreRender, and OnUnload base methods call back on the corresponding Control class methods. したがって、オーバーライドされたこれらのメソッドはいずれも、 ControlAdapter 基本メソッドを呼び出す必要があります。それ以外の場合、クラスメソッドに関連付けられているイベントは Control 発生しません。Thus, any of these ControlAdapter methods that are overridden must call their base methods; otherwise, the event associated with the Control class method will not be raised.

コントロールとアダプターは、必要に応じて、およびインターフェイスを実装し IPostBackDataHandler IPostBackEventHandler ます。Controls and adapters optionally implement the IPostBackDataHandler and IPostBackEventHandler interfaces. .NET Framework は、アダプターが存在するかどうか、およびアダプターがこれらのインターフェイスを実装するかどうかを判断します。The .NET Framework determines whether an adapter exists and whether the adapter implements these interfaces. このような場合は、必要に応じて、、、およびの各メソッドをアダプターでオーバーライドする必要があり LoadPostData RaisePostDataChangedEvent RaisePostBackEvent ます。If it does, the adapter should override the LoadPostData, RaisePostDataChangedEvent, and RaisePostBackEvent methods, as necessary. ポストバックデータがアダプターで認識されない場合は、そのデータを処理するためにコントロールでコールバックする必要があります。If the postback data is not recognized in the adapter, it must call back on the control to process it. 後続のイベントハンドラーも、コントロールでコールバックする必要があります。Subsequent event handlers also must call back on the control.

注意 (実装者)

クラスから継承する場合 ControlAdapter 、一般的なアダプターの機能を必要とするコントロールには、対応するアダプターの基本クラスが含まれている必要があり ControlType Adapter ます (たとえば、 TextBoxAdapter )。When you inherit from the ControlAdapter class, a control that requires general adapter functionality should have a corresponding adapter base class, named in the pattern ControlTypeAdapter (for example, TextBoxAdapter). アダプターは、少なくとも、プロパティを使用してコントロールの厳密に型指定されたインスタンスを返す必要があり Control ます。The adapter should at a minimum return a strongly-typed instance of the control through its Control property.

1.1. 特定のコントロール型とマークアップ言語のコントロールアダプターは、パターンで名前を付ける必要があり MarkupControlType Adapter ます (たとえば、 XhtmlTextBoxAdapter )。Control adapters for a given control type and markup language should be named in the pattern MarkupControlTypeAdapter (for example, XhtmlTextBoxAdapter). コントロールのアダプターは、subnamespace に実装する必要があり Adapters ます。Adapters for a control should be implemented in an Adapters subnamespace.

コントロールアダプターは、適切な基底クラスから継承し、コントロールと同じ継承モデルに従う必要があります。Control adapters should inherit from the appropriate base class and follow the same inheritance model as the control. たとえば、基底クラスから継承するコントロールのアダプターは、 Control クラスまたは関連するクラスから継承する必要があり ControlAdapter ControlType Adapter ます。For example, an adapter for a control inheriting from the Control base class should inherit from either the ControlAdapter class or the relevant ControlTypeAdapter class.

特殊化されたアダプターは、構成のブラウザーファイル内のすべてのデバイスノードにある特殊なコントロールに対して定義する必要があります。Any specialized adapters should be defined for the specialized control under all of the device nodes in configuration .browser files.

適切に実装されたコントロールは、アダプターがアタッチされていること、またはアタッチされたアダプターが特定のインターフェイスを実装していることを想定してはいけません。A properly implemented control should not assume that an adapter is attached, or that the attached adapter implements a specific interface. 代わりに、を呼び出す前に、これらのチェックボックスをオンにする必要があります。Instead, it should check for these before calling.

のメソッドなど、コントロール内の保護されたイベントメソッドのオーバーライドをシミュレートすることができ OnClick(EventArgs) LinkButton ます。It is possible to simulate overriding protected event methods in the control, such as the OnClick(EventArgs) method of the LinkButton. まず、 OnClick メソッドを使用してアダプタークラスを作成します。First, create an adapter class with an OnClick method. 次に、から派生した新しいコントロールを作成 LinkButton し、メソッドをオーバーライドし OnClick(EventArgs) ます。Then create a new control derived from LinkButton and override the OnClick(EventArgs) method. オーバーライドされたメソッドは、 OnClick(EventArgs) アダプターの OnClick メソッドを呼び出します。The overridden OnClick(EventArgs) method calls the OnClick method of the adapter. アダプターオブジェクトは、クラスの protected プロパティを介して使用でき Adapter Control ます。The adapter object is available through the protected Adapter property of the Control class. Adapterコントロールのプロパティは、 null 関連付けられたアダプターが存在しない場合に、アダプターのメソッドを呼び出す前に、その条件をすべてのコードでチェックする必要があることを示します。The Adapter property of the control is null when there is no associated adapter, so any code should check for that condition before calling methods of the adapter.

コンストラクター

ControlAdapter()

ControlAdapter クラスの新しいインスタンスを初期化します。Initializes a new instance of the ControlAdapter class.

プロパティ

Browser

現在の HTTP 要求の作成元であるクライアントのブラウザー機能への参照を取得します。Gets a reference to the browser capabilities of the client making the current HTTP request.

Control

このコントロール アダプターの割り当て先コントロールへの参照を取得します。Gets a reference to the control to which this control adapter is attached.

Page

このアダプターに関連付けられたコントロールが配置されているページへの参照を取得します。Gets a reference to the page where the control associated with this adapter resides.

PageAdapter

関連付けられたコントロールが配置されているページのページ アダプターへの参照を取得します。Gets a reference to the page adapter for the page where the associated control resides.

メソッド

BeginRender(HtmlTextWriter)

コントロールの表示前に呼び出されます。Called prior to the rendering of a control. 派生アダプター クラスで、HTML ブラウザーには必要ではなくても特定のターゲットには必要な開始タグを生成します。In a derived adapter class, generates opening tags that are required by a specific target but not needed by HTML browsers.

CreateChildControls()

複合コントロールのターゲット固有の子コントロールを作成します。Creates the target-specific child controls for a composite control.

EndRender(HtmlTextWriter)

コントロールの表示後に呼び出されます。Called after the rendering of a control. 派生アダプター クラスで、HTML ブラウザーには必要ではなくても特定のターゲットには必要な終了タグを生成します。In a derived adapter class, generates closing tags that are required by a specific target but not needed by HTML browsers.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
LoadAdapterControlState(Object)

このコントロール アダプターに関連付けられたコントロールが配置されているページに対する以前の要求時に SaveAdapterControlState() によって保存された、アダプターのコントロール状態情報を読み込みます。Loads adapter control state information that was saved by SaveAdapterControlState() during a previous request to the page where the control associated with this control adapter resides.

LoadAdapterViewState(Object)

このコントロール アダプターに関連付けられたコントロールが配置されているページに対する以前の要求時に SaveAdapterViewState() によって保存された、アダプターのビューステートを読み込みます。Loads adapter view state information that was saved by SaveAdapterViewState() during a previous request to the page where the control associated with this control adapter resides.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
OnInit(EventArgs)

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

OnLoad(EventArgs)

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

OnPreRender(EventArgs)

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

OnUnload(EventArgs)

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

Render(HtmlTextWriter)

コントロール アダプターがアタッチされるコントロール用にターゲット固有のマークアップを生成します。Generates the target-specific markup for the control to which the control adapter is attached.

RenderChildren(HtmlTextWriter)

コントロール アダプターの割り当て先である複合コントロールに含まれる子コントロールのターゲット固有のマークアップを生成します。Generates the target-specific markup for the child controls in a composite control to which the control adapter is attached.

SaveAdapterControlState()

コントロール アダプターのコントロール状態情報を保存します。Saves control state information for the control adapter.

SaveAdapterViewState()

コントロール アダプターのビューステート情報を保存します。Saves view state information for the control adapter.

ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

適用対象

こちらもご覧ください