ControlAdapter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Personaliza la representación del control derivado al que está asociado el adaptador, para modificar el marcado o el comportamiento predeterminados para exploradores concretos, y es la clase base de la que heredan todos los adaptadores de control.
public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
- Herencia
-
ControlAdapter
- Derivado
Comentarios
Los adaptadores de control son componentes que invalidan determinados Control métodos de clase y eventos en su ciclo de vida de ejecución para permitir el control específico del explorador o del marcado. El .NET Framework asigna un único adaptador de control derivado a un Control objeto para cada solicitud de cliente.
Un adaptador modifica un control para un explorador específico o clase de exploradores o actúa como un filtro arbitrario en alguna funcionalidad. Normalmente, el adaptador se define mediante el lenguaje de marcado que usa el explorador (por ejemplo, XHTML o HTML 3.2). Gran parte de la adaptabilidad en el comportamiento de representación se puede encapsular en las clases especializadas que derivan de la HtmlTextWriter clase . Por lo tanto, es probable que se pueda usar un único adaptador para una serie de comportamientos de clase de explorador o que la inclusión de la adaptabilidad en las HtmlTextWriter clases podría hacer innecesario el uso de un adaptador de control.
Un adaptador para una clase de control se aplica a todos los controles que heredan de esa clase, a menos que haya adaptadores más especializados. Por ejemplo, se puede usar un adaptador para la BaseValidator clase para todos los Validator
objetos .
Normalmente, los adaptadores no heredan directamente de la ControlAdapter clase , sino de una de las clases base del adaptador específicas del destino que proporcionan funcionalidad adicional específica para el tipo de control y el explorador de destino o la representación concreta necesaria.
Los propios controles no requieren necesariamente un adaptador. Si los controles se extienden a través de la composición, generalmente los adaptadores de control secundarios son suficientes.
Cada control tiene asignaciones explícitas a adaptadores a través de los archivos de definición .browser. Por lo tanto, cualquier acceso a la Control.Adapter propiedad utiliza el HttpBrowserCapabilities objeto extraído de los archivos de definición del explorador para realizar la búsqueda de la asignación del adaptador que se va a controlar.
Durante el procesamiento, el .NET Framework intercepta las llamadas a los métodos reemplazables de un control que podría ser específico del destino. Si se conecta un adaptador de control, el .NET Framework llama a los métodos de adaptador asociados.
El adaptador realiza la representación del control a través del Render método . Si se reemplaza, Render potencialmente no debe llamar a la implementación de la clase base porque realiza una devolución de llamada en el Control.Render método . Esto puede hacer que la representación se produzca dos veces, una vez por el adaptador y una vez por el control .
El Render método base vuelve a llamar al Control.Render método del control . Por lo tanto, si invalida Render, no debe llamar a la implementación de la clase base a menos que la representación que implemente se suma a la proporcionada por Control.Render el control .
Debe asegurarse de que el .NET Framework realiza la interceptación de adaptadores de los controles secundarios. Para ello, llame al RenderChildren método base, que llama al Control.RenderChildren método del control, desde Render la invalidación.
El control llama a los BeginRender métodos y EndRender inmediatamente antes y después (respectivamente), el control llama al Render método . Si la representación previa y posterior son las únicas tareas de procesamiento específicas del explorador necesarias, el uso BeginRender de y EndRender podría hacer que no sea necesario invalidar Render. El comportamiento predeterminado de los BeginRender métodos y EndRender es llamar a los métodos correspondientes de HtmlTextWriter.
Para mantener su propia información de estado, un adaptador de control puede invalidar los SaveAdapterControlStatemétodos , LoadAdapterControlState, SaveAdapterViewStatey LoadAdapterViewState . SaveAdapterControlStateSe llama a , SaveAdapterViewStateLoadAdapterControlState, y LoadAdapterViewState cuando se guardan y cargan los estados de vista y control privado, respectivamente.
Los OnInitmétodos base , OnLoad, OnPreRendery OnUnload devuelven la llamada a los métodos de clase correspondientes Control . Por lo tanto, cualquiera de estos ControlAdapter métodos que se invalidan debe llamar a sus métodos base; de lo contrario, no se generará el evento asociado al Control método de clase.
Los controles y adaptadores implementan opcionalmente las IPostBackDataHandler interfaces e IPostBackEventHandler . El .NET Framework determina si existe un adaptador y si el adaptador implementa estas interfaces. Si es así, el adaptador debe invalidar los LoadPostDatamétodos , RaisePostDataChangedEventy RaisePostBackEvent , según sea necesario. Si los datos de postback no se reconocen en el adaptador, debe volver a llamar al control para procesarlos. Los controladores de eventos posteriores también deben volver a llamar al control .
Notas a los implementadores
Cuando hereda de la ControlAdapter clase , un control que requiere la funcionalidad general del adaptador debe tener una clase base de adaptador correspondiente, denominada en el patrón ControlType
Adapter
(por ejemplo, TextBoxAdapter
). El adaptador debe devolver como mínimo una instancia fuertemente tipada del control a través de su Control propiedad .
- Los adaptadores de control para un tipo de control determinado y el lenguaje de marcado deben denominarse en el patrón
MarkupControlType
Adapter
(por ejemplo,XhtmlTextBoxAdapter
). Los adaptadores de un control deben implementarse en unAdapters
subespacio de nombres.
Los adaptadores de control deben heredar de la clase base adecuada y seguir el mismo modelo de herencia que el control. Por ejemplo, un adaptador para un control que hereda de la Control clase base debe heredar de la ControlAdapter clase o de la clase pertinente ControlType
Adapter
.
Todos los adaptadores especializados deben definirse para el control especializado en todos los nodos del dispositivo en los archivos .browser de configuración.
Un control implementado correctamente no debe suponer que un adaptador está conectado o que el adaptador conectado implementa una interfaz específica. En su lugar, debe comprobarlos antes de llamar a .
Es posible simular la invalidación de métodos de eventos protegidos en el control, como el OnClick(EventArgs) método de LinkButton. En primer lugar, cree una clase de adaptador con un método OnClick
. A continuación, cree un nuevo control derivado de LinkButton e invalide el OnClick(EventArgs) método . El método invalidado OnClick(EventArgs) llama al método OnClick
del adaptador. El objeto de adaptador está disponible a través de la propiedad protegida Adapter de la Control clase . La Adapter propiedad del control es null
cuando no hay ningún adaptador asociado, por lo que cualquier código debe comprobar esa condición antes de llamar a métodos del adaptador.
Constructores
ControlAdapter() |
Inicializa una nueva instancia de la clase ControlAdapter. |
Propiedades
Browser |
Obtiene una referencia a las posibilidades del explorador del cliente que realiza la solicitud HTTP actual. |
Control |
Obtiene una referencia al control al que está asociado este adaptador de control. |
Page |
Obtiene una referencia a la página donde reside el control asociado a este adaptador. |
PageAdapter |
Obtiene una referencia al adaptador de la página donde reside el control asociado. |
Métodos
BeginRender(HtmlTextWriter) |
Se le llama antes de la representación de un control. En una clase de adaptador derivada, genera etiquetas de apertura requeridas por un destino concreto pero que no son necesarias para los exploradores de HTML. |
CreateChildControls() |
Crea los controles secundarios específicos del destino para un control compuesto. |
EndRender(HtmlTextWriter) |
Se le llama después de la representación de un control. En una clase de adaptador derivada, genera etiquetas de cierre requeridas por un destino concreto pero que no son necesarias para los exploradores de HTML. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
LoadAdapterControlState(Object) |
Carga información de estado del control de adaptador, guardada por SaveAdapterControlState() durante una solicitud anterior, en la página donde reside el control asociado a este adaptador de control. |
LoadAdapterViewState(Object) |
Carga información del estado de la vista del adaptador, guardada por SaveAdapterViewState() durante una solicitud anterior, en la página donde reside el control asociado a este adaptador de control. |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
OnInit(EventArgs) |
Reemplaza el método OnInit(EventArgs) para el control asociado. |
OnLoad(EventArgs) |
Reemplaza el método OnLoad(EventArgs) para el control asociado. |
OnPreRender(EventArgs) |
Reemplaza el método OnPreRender(EventArgs) para el control asociado. |
OnUnload(EventArgs) |
Reemplaza el método OnUnload(EventArgs) para el control asociado. |
Render(HtmlTextWriter) |
Genera el marcado específico del destino para el control al que está asociado el adaptador de control. |
RenderChildren(HtmlTextWriter) |
Genera el marcado específico del destino para los controles secundarios en un control compuesto al que está asociado el adaptador de control. |
SaveAdapterControlState() |
Guarda información de estado de control para el adaptador de control. |
SaveAdapterViewState() |
Guarda información del estado de vista para el adaptador de control. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |