ControlAdapter Classe
Definição
Personaliza a renderização do controle derivado ao qual o adaptador está anexado, para modificar o comportamento ou marcação padrão para navegadores específicos e é a classe base que todos os adaptadores de controle herdam.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
- Herança
-
ControlAdapter
- Derivado
Comentários
Os adaptadores de controle são componentes que substituem determinados Control eventos e métodos de classe em seu ciclo de vida de execução para permitir manipulação específica de navegador ou marcação.Control adapters are components that override certain Control class methods and events in its execution lifecycle to allow browser or markup-specific handling. O .NET Framework mapeia um único adaptador de controle derivado para um Control objeto para cada solicitação do cliente.The .NET Framework maps a single derived control adapter to a Control object for each client request.
Um adaptador modifica um controle para um navegador específico ou uma classe de navegadores ou atua como um filtro arbitrário em algum recurso.An adapter modifies a control for a specific browser or class of browsers or acts as an arbitrary filter on some capability. Normalmente, o adaptador é definido pela linguagem de marcação que o navegador usa (por exemplo, XHTML ou HTML 3,2).Typically the adapter is defined by the markup language that the browser uses (for example, XHTML or HTML 3.2). Grande parte da capacidade de adaptação no comportamento de renderização pode ser encapsulada nas classes especializadas que derivam da HtmlTextWriter classe.Much of the adaptability in rendering behavior can be encapsulated in the specialized classes that derive from the HtmlTextWriter class. Portanto, é provável que um único adaptador possa ser usado para vários comportamentos de classe de navegador ou que a inclusão da adaptabilidade nas HtmlTextWriter classes possa tornar o uso de um adaptador de controle desnecessário.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.
Um adaptador para uma classe de controle se aplica a todos os controles que herdam dessa classe, a menos que os adaptadores mais especializados estejam presentes.An adapter for a control class applies to all controls that inherit from that class, unless more specialized adapters are present. Por exemplo, um adaptador para a BaseValidator classe pode ser usado para todos os Validator objetos.For example, an adapter for the BaseValidator class can be used for all Validator objects.
Os adaptadores normalmente não herdam diretamente da ControlAdapter classe, mas de uma das classes base de adaptador específicas de destino que fornecem funcionalidade adicional específica ao tipo de controle e ao navegador de destino ou à renderização específica necessária.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.
Os próprios controles não exigem necessariamente um adaptador.Controls themselves do not necessarily require an adapter. Se os controles forem estendidos por meio da composição, geralmente os adaptadores de controle filho serão suficientes.If controls are extended through composition, generally the child control adapters are sufficient.
Cada controle tem mapeamentos explícitos para adaptadores por meio dos arquivos de definição. browser.Each control has explicit mappings to adapters through the .browser definition files. Assim, qualquer acesso à Control.Adapter propriedade usa o HttpBrowserCapabilities objeto extraído dos arquivos de definição do navegador para executar a pesquisa para o mapeamento do adaptador para controle.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.
Durante o processamento, o .NET Framework intercepta chamadas para os métodos substituíveis de um controle que podem ser específicos de destino.During processing, the .NET Framework intercepts calls to the overridable methods of a control that could be target-specific. Se um adaptador de controle estiver anexado, o .NET Framework chamará os métodos do adaptador associado.If a control adapter is attached, the .NET Framework calls the associated adapter methods.
O adaptador executa a renderização para o controle por meio do Render método.The adapter performs rendering for the control through the Render method. Se substituído, Render potencialmente não deve chamar a implementação da classe base porque isso executa uma chamada de retorno Control.Render no método.If overridden, Render potentially should not call the base class implementation because that performs a call back on the Control.Render method. Isso pode fazer com que a renderização ocorra duas vezes, uma vez pelo adaptador e uma vez pelo controle.This might cause the rendering to occur twice, once by the adapter and once by the control.
O Render método base chama de volta o Control.Render método do controle.The Render base method calls back on the Control.Render method of the control. Portanto, se você substituir Render , não deverá chamar a implementação da classe base, a menos que a renderização implementada seja além da fornecida pelo Control.Render controle.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.
Você deve garantir que a .NET Framework execute a interceptação para adaptadores dos controles filho.You must ensure that the .NET Framework performs interception for adapters of the child controls. Você pode fazer isso chamando o RenderChildren método base, que chama o Control.RenderChildren método do controle, da sua Render substituição.You can do this by calling the RenderChildren base method, which calls the Control.RenderChildren method of the control, from your Render override.
Os BeginRender EndRender métodos e são chamados pelo controle imediatamente antes e depois (respectivamente) o controle chama o Render método.The BeginRender and EndRender methods are called by the control immediately before and after (respectively) the control calls the Render method. Se pré e pós-processamento forem as únicas tarefas de processamento específicas do navegador necessárias, usando BeginRender e EndRender podem torná-lo desnecessário para a substituição 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. O comportamento padrão dos BeginRender métodos e EndRender é chamar os métodos correspondentes do HtmlTextWriter .The default behavior of the BeginRender and EndRender methods is to call the corresponding methods of the HtmlTextWriter.
Para manter suas próprias informações de estado, um adaptador de controle pode substituir os SaveAdapterControlState métodos,, LoadAdapterControlState SaveAdapterViewState e LoadAdapterViewState .To maintain its own state information, a control adapter can override the SaveAdapterControlState, LoadAdapterControlState, SaveAdapterViewState, and LoadAdapterViewState methods. SaveAdapterControlState, SaveAdapterViewState , LoadAdapterControlState e LoadAdapterViewState são chamados quando o controle particular e os Estados de exibição são salvos e carregados, respectivamente.SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState, and LoadAdapterViewState are called when the private control and view states are saved and loaded, respectively.
Os OnInit métodos base,, e OnLoad OnPreRender OnUnload chamam de volta os métodos de Control classe correspondentes.The OnInit, OnLoad, OnPreRender, and OnUnload base methods call back on the corresponding Control class methods. Assim, qualquer um desses ControlAdapter métodos substituídos deve chamar seus métodos base; caso contrário, o evento associado ao Control método de classe não será gerado.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.
Os controles e adaptadores, opcionalmente, implementam as IPostBackDataHandler IPostBackEventHandler interfaces e.Controls and adapters optionally implement the IPostBackDataHandler and IPostBackEventHandler interfaces. O .NET Framework determina se um adaptador existe e se o adaptador implementa essas interfaces.The .NET Framework determines whether an adapter exists and whether the adapter implements these interfaces. Se tiver, o adaptador deverá substituir os LoadPostData métodos, RaisePostDataChangedEvent e RaisePostBackEvent , conforme necessário.If it does, the adapter should override the LoadPostData, RaisePostDataChangedEvent, and RaisePostBackEvent methods, as necessary. Se os dados de postback não forem reconhecidos no adaptador, ele deverá chamar novamente o controle para processá-los.If the postback data is not recognized in the adapter, it must call back on the control to process it. Os manipuladores de eventos subsequentes também devem chamar de volta o controle.Subsequent event handlers also must call back on the control.
Notas aos Implementadores
Quando você herda da ControlAdapter classe, um controle que requer funcionalidade de adaptador geral deve ter uma classe base de adaptador correspondente, denominada no padrão ControlType Adapter (por exemplo, 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). O adaptador deve, no mínimo, retornar uma instância fortemente tipada do controle por meio de sua Control propriedade.The adapter should at a minimum return a strongly-typed instance of the control through its Control property.
1.1. Os adaptadores de controle para um determinado tipo de controle e linguagem de marcação devem ser nomeados no padrão MarkupControlType Adapter (por exemplo, XhtmlTextBoxAdapter ).Control adapters for a given control type and markup language should be named in the pattern MarkupControlTypeAdapter (for example, XhtmlTextBoxAdapter). Os adaptadores para um controle devem ser implementados em um Adapters subnamespace.Adapters for a control should be implemented in an Adapters subnamespace.
Os adaptadores de controle devem herdar da classe base apropriada e seguir o mesmo modelo de herança que o controle.Control adapters should inherit from the appropriate base class and follow the same inheritance model as the control. Por exemplo, um adaptador para um controle herdado da Control classe base deve herdar da classe ControlAdapter ou da ControlType Adapter classe relevante.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.
Todos os adaptadores especializados devem ser definidos para o controle especializado em todos os nós de dispositivo nos arquivos. browser de configuração.Any specialized adapters should be defined for the specialized control under all of the device nodes in configuration .browser files.
Um controle implementado corretamente não deve supor que um adaptador esteja anexado ou que o adaptador anexado implemente uma interface específica.A properly implemented control should not assume that an adapter is attached, or that the attached adapter implements a specific interface. Em vez disso, ele deve verificá-los antes de chamar.Instead, it should check for these before calling.
É possível simular a substituição de métodos de evento protegidos no controle, como o OnClick(EventArgs) método do LinkButton .It is possible to simulate overriding protected event methods in the control, such as the OnClick(EventArgs) method of the LinkButton. Primeiro, crie uma classe de adaptador com um método onclick .First, create an adapter class with an OnClick method. Em seguida, crie um novo controle derivado de LinkButton e substitua o OnClick(EventArgs) método.Then create a new control derived from LinkButton and override the OnClick(EventArgs) method. O OnClick(EventArgs) método substituído chama o método onclick do adaptador.The overridden OnClick(EventArgs) method calls the OnClick method of the adapter. O objeto Adapter está disponível por meio da Adapter propriedade protected da Control classe.The adapter object is available through the protected Adapter property of the Control class. A Adapter Propriedade do controle é null quando não há nenhum adaptador associado, portanto, qualquer código deve verificar essa condição antes de chamar os métodos do adaptador.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.
Construtores
| ControlAdapter() |
Inicializa uma nova instância da classe ControlAdapter.Initializes a new instance of the ControlAdapter class. |
Propriedades
| Browser |
Obtém uma referência aos recursos do navegador do cliente que está fazendo a solicitação HTTP atual.Gets a reference to the browser capabilities of the client making the current HTTP request. |
| Control |
Obtém uma referência ao controle ao qual esse adaptador de controle está anexado.Gets a reference to the control to which this control adapter is attached. |
| Page |
Obtém uma referência à página em que o controle associado a esse adaptador está.Gets a reference to the page where the control associated with this adapter resides. |
| PageAdapter |
Obtém uma referência ao adaptador de página da página em que o controle associado está.Gets a reference to the page adapter for the page where the associated control resides. |
Métodos
| BeginRender(HtmlTextWriter) |
Chamado antes da renderização de um controle.Called prior to the rendering of a control. Em uma classe de adaptador derivada, gera marcas de abertura que são necessárias para um destino específico, mas não para navegadores HTML.In a derived adapter class, generates opening tags that are required by a specific target but not needed by HTML browsers. |
| CreateChildControls() |
Cria os controles filho de destino específico de um controle de composição.Creates the target-specific child controls for a composite control. |
| EndRender(HtmlTextWriter) |
Chamado depois da renderização de um controle.Called after the rendering of a control. Em uma classe de adaptador derivada, gera marcas de fechamento que são necessárias para um destino específico, mas não para navegadores HTML.In a derived adapter class, generates closing tags that are required by a specific target but not needed by HTML browsers. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object. (Herdado de Object) |
| GetHashCode() |
Serve como a função de hash padrão.Serves as the default hash function. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual.Gets the Type of the current instance. (Herdado de Object) |
| LoadAdapterControlState(Object) |
Carrega informações sobre o estado do controle do adaptador que foram salvas pelo SaveAdapterControlState() durante a solicitação anterior à página em que o controle associado a esse adaptador de controle está.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) |
Carrega informações sobre o estado de exibição do adaptador que foram salvas pelo SaveAdapterViewState() durante uma solicitação anterior à página em que o controle associado a esse adaptador de controle está.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() |
Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object. (Herdado de Object) |
| OnInit(EventArgs) |
Substitui o método OnInit(EventArgs) do controle associado.Overrides the OnInit(EventArgs) method for the associated control. |
| OnLoad(EventArgs) |
Substitui o método OnLoad(EventArgs) do controle associado.Overrides the OnLoad(EventArgs) method for the associated control. |
| OnPreRender(EventArgs) |
Substitui o método OnPreRender(EventArgs) do controle associado.Overrides the OnPreRender(EventArgs) method for the associated control. |
| OnUnload(EventArgs) |
Substitui o método OnUnload(EventArgs) do controle associado.Overrides the OnUnload(EventArgs) method for the associated control. |
| Render(HtmlTextWriter) |
Gera a marcação específica para o destino para o controle ao qual o adaptador de controle está anexado.Generates the target-specific markup for the control to which the control adapter is attached. |
| RenderChildren(HtmlTextWriter) |
Gera a marcação específica para o destino dos controles filho em um controle de composição ao qual o adaptador de controle está anexado.Generates the target-specific markup for the child controls in a composite control to which the control adapter is attached. |
| SaveAdapterControlState() |
Salva informações de estado do controle do adaptador de controle.Saves control state information for the control adapter. |
| SaveAdapterViewState() |
Salva informações de estado de exibição do adaptador de controle.Saves view state information for the control adapter. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object. (Herdado de Object) |