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.Renderて提供されるものに加えられていない限り、基本クラスの実装を呼び出さないでください。Thus, 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 Renderオーバーライドから、コントロールのControl.RenderChildrenメソッドを呼び出す基本メソッドを呼び出します。You can do this by calling the RenderChildren base method, which calls the Control.RenderChildren method of the control, from your Render override.

メソッドBeginRender RenderEndRenderメソッドは、コントロールがメソッドを呼び出す前後に、コントロールによって呼び出されます。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 HtmlTextWriterEndRenderメソッドの既定の動作では、の対応するメソッドを呼び出します。The default behavior of the BeginRender and EndRender methods is to call the corresponding methods of the HtmlTextWriter.

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

OnInitOnLoadControl 、およびの各基本メソッドは、対応するクラスメソッドに対してコールバックします。OnUnload OnPreRenderThe 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.

コントロールとアダプターは、必要IPostBackDataHandlerIPostBackEventHandler応じて、およびインターフェイスを実装します。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. このような場合は、必要に応じLoadPostDataRaisePostDataChangedEvent、、 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). コントロールのアダプターは、 Adapters subnamespace に実装する必要があります。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)など、コントロール内の保護されたイベントメソッドのオーバーライドをシミュレートすることができます。LinkButtonIt 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. アダプターオブジェクトは、 Adapter Controlクラスの protected プロパティを介して使用できます。The adapter object is available through the protected Adapter property of the Control class. コントロールのnullプロパティは、関連付けられたアダプターが存在しない場合に、アダプターのメソッドを呼び出す前に、その条件をすべてのコードでチェックする必要があることを示します。 AdapterThe 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)

適用対象

こちらもご覧ください