ControlAdapter Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Настраивает отрисовку производного элемента управления, к которому присоединен адаптер, предназначенного для изменения стандартной разметки или поведения определенных браузеров, и является базовым классом, из которого наследуются все адаптеры элементов управления.
public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
- Наследование
-
ControlAdapter
- Производный
Комментарии
Адаптеры управления — это компоненты, которые переопределяют определенные Control методы класса и события в жизненном цикле выполнения, чтобы разрешить обработку в браузере или разметке. Платформа .NET Framework сопоставляет один производный адаптер управления с Control объектом для каждого запроса клиента.
Адаптер изменяет элемент управления для определенного браузера или класса браузеров или выступает в качестве произвольного фильтра для некоторых возможностей. Обычно адаптер определяется языком разметки, который использует браузер (например, XHTML или HTML 3.2). Большую часть адаптации в поведении отрисовки можно инкапсулировать в специализированных классах, производных от HtmlTextWriter класса. Таким образом, скорее всего, один адаптер можно использовать для ряда поведений класса браузера или того, что включение адаптации в HtmlTextWriter классы может сделать использование адаптера управления ненужным.
Адаптер для класса элементов управления применяется ко всем элементам управления, наследуемым от этого класса, если не присутствуют более специализированные адаптеры. Например, адаптер класса BaseValidator можно использовать для всех Validator
объектов.
Адаптеры обычно не наследуются напрямую от ControlAdapter класса, а от одного из базовых классов адаптеров, зависящих от целевого адаптера, которые предоставляют дополнительные функциональные возможности, относящиеся к типу элемента управления и целевому браузеру или определенной отрисовке.
Сами элементы управления не обязательно требуют адаптера. Если элементы управления расширяются посредством композиции, обычно адаптеры дочерних элементов управления достаточно.
Каждый элемент управления имеет явные сопоставления с адаптерами с помощью файлов определения браузера. Таким образом, любой доступ к Control.Adapter свойству использует HttpBrowserCapabilities объект, извлеченный из файлов определения браузера, для выполнения поиска сопоставления адаптера с элементом управления.
Во время обработки платформа .NET Framework перехватывает вызовы переопределиваемых методов элемента управления, которые могут быть целевыми. Если адаптер управления подключен, платформа .NET Framework вызывает связанные методы адаптера.
Адаптер выполняет отрисовку элемента управления с помощью Render метода. Если переопределено, возможно, не следует вызывать реализацию базового класса, Render так как она выполняет обратный вызов метода Control.Render . Это может привести к тому, что отрисовка выполняется дважды, один раз адаптером и один раз элементом управления.
Базовый Render метод возвращает метод Control.Render элемента управления. Таким образом, при переопределении Renderне следует вызывать реализацию базового класса, если не реализованная отрисовка не является дополнением Control.Render к этой реализации элемента управления.
Необходимо убедиться, что платформа .NET Framework выполняет перехват для адаптеров дочерних элементов управления. Это можно сделать, вызвав базовый RenderChildren метод, который вызывает Control.RenderChildren метод элемента управления из Render переопределения.
Методы BeginRender вызываются EndRender элементом управления непосредственно перед и после (соответственно) вызывает Render метод. Если предварительные и пост-отрисовки являются единственными необходимыми задачами обработки, необходимыми для конкретного браузера, использование BeginRender и EndRender может привести к необходимости переопределения Render. Поведение и BeginRender EndRender методы по умолчанию — вызов соответствующих методов объекта HtmlTextWriter.
Чтобы сохранить собственные сведения о состоянии, адаптер управления может переопределить SaveAdapterControlStateметоды , SaveAdapterViewStateLoadAdapterControlStateи LoadAdapterViewState методы. SaveAdapterControlState, , SaveAdapterViewStateLoadAdapterControlStateи LoadAdapterViewState вызывается при сохранении и загрузке состояний закрытого элемента управления и представления соответственно.
Методы , OnPreRenderOnLoadи OnUnload базовые OnInitметоды возвращаются к соответствующим Control методам класса. Таким образом, любой из этих ControlAdapter методов, переопределенных, должен вызывать их базовые методы; в противном случае событие, связанное с методом Control класса, не будет вызываться.
Элементы управления и адаптеры при необходимости реализуют IPostBackDataHandler интерфейсы и IPostBackEventHandler элементы управления. Платформа .NET Framework определяет, существует ли адаптер и реализует ли адаптер эти интерфейсы. В этом случае адаптер должен переопределить LoadPostDataRaisePostDataChangedEventметоды и RaisePostBackEvent методы по мере необходимости. Если данные обратной передачи не распознаны в адаптере, он должен вернуться к элементу управления, чтобы обработать его. Последующие обработчики событий также должны вернуться к элементу управления.
Примечания для тех, кто реализует этот метод
При наследовании от ControlAdapter класса элемент управления, требующий общих функциональных возможностей адаптера, должен иметь соответствующий базовый класс адаптера, названный в шаблоне ControlType
Adapter
(например, TextBoxAdapter
). Адаптер должен возвращать строго типизированный экземпляр элемента управления через его Control свойство.
- Адаптеры элементов управления для заданного типа элемента управления и языка разметки должны называться в шаблоне
MarkupControlType
Adapter
(например,XhtmlTextBoxAdapter
). Адаптеры для элемента управления должны быть реализованы в подпространствеAdapters
имен.
Адаптеры управления должны наследовать от соответствующего базового класса и следовать той же модели наследования, что и элемент управления. Например, адаптер для элемента управления, наследующего от Control базового класса, должен наследоваться от ControlAdapter класса или соответствующего ControlType
Adapter
класса.
Все специализированные адаптеры должны быть определены для специализированного элемента управления во всех узлах устройства в файлах configuration .browser.
Правильно реализованный элемент управления не должен предполагать, что адаптер подключен или что подключенный адаптер реализует определенный интерфейс. Вместо этого он должен проверить наличие этих данных перед вызовом.
Можно имитировать переопределение защищенных методов событий в элементе управления, например OnClick(EventArgs) метод .LinkButton Сначала создайте класс адаптера с помощью метода OnClick
. Затем создайте новый элемент управления, производный от LinkButton метода, и переопределите OnClick(EventArgs) его. Переопределенный OnClick(EventArgs) метод вызывает метод OnClick
адаптера. Объект адаптера доступен через защищенное Adapter свойство Control класса. Свойство Adapter элемента управления заключается null
в отсутствии связанного адаптера, поэтому любой код должен проверять это условие перед вызовом методов адаптера.
Конструкторы
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) |