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 сопоставляет один производный адаптер 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. Таким образом, вполне вероятно, что один адаптер может использоваться для нескольких вариантов поведения класса браузера или что включение адаптируемости в 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 класса, но из одного из базовых классов адаптера, предназначенных для конкретных целевых устройств, которые предоставляют дополнительные функциональные возможности, относящиеся к типу элемента управления и целевому браузеру, или к конкретной отрисовке.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. Это может привести к тому, что отрисовка будет происходить дважды, один раз адаптером и один раз в элементе управления.This might cause the rendering to occur twice, once by the adapter and once by the control.

Базовый метод выполняет обратный Control.Render вызов метода элемента управления. RenderThe 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 базовый метод, который Control.RenderChildren вызывает метод элемента управления из Render перекрытия.You can do this by calling the RenderChildren base method, which calls the Control.RenderChildren method of the control, from your Render override.

Методы BeginRender Render и EndRender вызываются элементом управления непосредственно до и после (соответственно) элемента управления, который вызывает метод.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 и заключается в вызове соответствующих методов класса. HtmlTextWriterThe 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. SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState иLoadAdapterViewState вызываются, когда закрытые элементы управления и состояния просмотра сохраняются и загружаются соответственно.SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState, and LoadAdapterViewState are called when the private control and view states are saved and loaded, respectively.

OnLoadБазовые методы Control , ,OnPreRender иOnUnload вызывают обратные вызовы к соответствующим методам класса. OnInitThe 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 класса элемент управления, которому требуются общие функции адаптера, должен иметь соответствующий базовый класс адаптера с именем в Adapter шаблоне ControlType (например, 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 подпространстве имен.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.

Все специализированные адаптеры должны быть определены для специализированного элемента управления во всех узлах устройств в файлах конфигурации. browser.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)

Применяется к

Дополнительно