Compartilhar via


ControlAdapter Classe

Definição

Personaliza a renderização para o controle derivado ao qual o adaptador está anexado, para modificar a marcação ou o comportamento padrão para navegadores específicos e é a classe base da qual todos os adaptadores de controle herdam.

public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
Herança
ControlAdapter
Derivado

Comentários

Adaptadores de controle são componentes que substituem determinados Control métodos de classe e eventos em seu ciclo de vida de execução para permitir a manipulação específica de navegador ou marcação. O .NET Framework mapeia um único adaptador de controle derivado para um Control objeto para cada solicitação de cliente.

Um adaptador modifica um controle para um navegador ou classe específica de navegadores ou atua como um filtro arbitrário em alguma funcionalidade. Normalmente, o adaptador é definido pela linguagem de marcação que o navegador usa (por exemplo, XHTML ou HTML 3.2). Grande parte da adaptabilidade no comportamento de renderização pode ser encapsulada nas classes especializadas que derivam da HtmlTextWriter classe. 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 desnecessário o uso de um adaptador de controle.

Um adaptador para uma classe de controle se aplica a todos os controles que herdam dessa classe, a menos que adaptadores mais especializados estejam presentes. Por exemplo, um adaptador para a BaseValidator classe pode ser usado para todos os Validator objetos.

Os adaptadores normalmente não herdam diretamente da ControlAdapter classe, mas de uma das classes base do adaptador específicas de destino que fornecem funcionalidade adicional específica ao tipo de controle e navegador de destino ou à renderização específica necessária.

Os próprios controles não exigem necessariamente um adaptador. Se os controles forem estendidos por meio da composição, geralmente os adaptadores de controle filho serão suficientes.

Cada controle tem mapeamentos explícitos para adaptadores por meio dos arquivos de definição do .browser. 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 a ser controlado.

Durante o processamento, o .NET Framework intercepta chamadas para os métodos substituíveis de um controle que pode ser específico do destino. Se um adaptador de controle estiver anexado, o .NET Framework chamará os métodos de adaptador associados.

O adaptador executa a renderização do controle por meio do Render método. Se substituído, Render potencialmente não deve chamar a implementação da classe base porque isso executa uma chamada novamente no Control.Render método. Isso pode fazer com que a renderização ocorra duas vezes, uma vez pelo adaptador e uma vez pelo controle.

O Render método base chama novamente o Control.Render método do controle. Portanto, se você substituir Render, não deverá chamar a implementação da classe base, a menos que a renderização implementada seja adicional à fornecida pelo Control.Render controle.

Você deve garantir que o .NET Framework execute a interceptação para adaptadores dos controles filho. Você pode fazer isso chamando o RenderChildren método base, que chama o Control.RenderChildren método do controle, de sua Render substituição.

Os BeginRender métodos e os métodos EndRender são chamados pelo controle imediatamente antes e depois (respectivamente) que o controle chama o Render método. Se pré e pós-renderização forem as únicas tarefas de processamento específicas do navegador necessárias, use BeginRender e EndRender pode tornar desnecessário substituir Render. O comportamento padrão dos métodos e EndRender dos BeginRender métodos é chamar os métodos correspondentes do HtmlTextWriter.

Para manter suas próprias informações de estado, um adaptador de controle pode substituir os SaveAdapterControlStatemétodos, LoadAdapterControlStatee SaveAdapterViewStateLoadAdapterViewState os métodos. SaveAdapterControlState, SaveAdapterViewStatee LoadAdapterControlStateLoadAdapterViewState são chamados quando o controle privado e os estados de exibição são salvos e carregados, respectivamente.

Os OnInitmétodos base e OnUnload , e , OnLoadem diante, OnPreRenderchamam de volta os métodos de classe correspondentesControl. Portanto, qualquer um desses ControlAdapter métodos substituídos deve chamar seus métodos base; caso contrário, o evento associado Control ao método de classe não será gerado.

Controles e adaptadores opcionalmente implementam as interfaces e os IPostBackDataHandler controles IPostBackEventHandler . O .NET Framework determina se existe um adaptador e se o adaptador implementa essas interfaces. Se isso acontecer, o adaptador deverá substituir os LoadPostDatamétodos e RaisePostBackEvent , RaisePostDataChangedEventconforme necessário. Se os dados de postback não forem reconhecidos no adaptador, eles deverão retornar ao controle para processá-los. Os manipuladores de eventos subsequentes também devem chamar de volta no controle.

Notas aos Implementadores

Quando você herda da ControlAdapter classe, um controle que exige a funcionalidade do adaptador geral deve ter uma classe base de adaptador correspondente, nomeada no padrão ControlTypeAdapter (por exemplo, TextBoxAdapter). O adaptador deve, no mínimo, retornar uma instância fortemente tipada do controle por meio de sua Control propriedade.

  1. Os adaptadores de controle para um determinado tipo de controle e linguagem de marcação devem ser nomeados no padrão MarkupControlTypeAdapter (por exemplo, XhtmlTextBoxAdapter). Os adaptadores para um controle devem ser implementados em um Adapters subnamespace.

Os adaptadores de controle devem herdar da classe base apropriada e seguir o mesmo modelo de herança que o controle. Por exemplo, um adaptador para um controle herdado da Control classe base deve herdar da ControlAdapter classe ou da classe relevante ControlTypeAdapter .

Todos os adaptadores especializados devem ser definidos para o controle especializado em todos os nós de dispositivo em arquivos .browser de configuração.

Um controle implementado corretamente não deve assumir que um adaptador está anexado ou que o adaptador anexado implementa uma interface específica. Em vez disso, ele deve verificar estes antes de chamar.

É possível simular a substituição de métodos de eventos protegidos no controle, como o OnClick(EventArgs) método do LinkButton. Primeiro, crie uma classe de adaptador com um OnClick método. Em seguida, crie um novo controle derivado LinkButton e substitua o OnClick(EventArgs) método. O método substituído OnClick(EventArgs) chama o OnClick método do adaptador. O objeto do adaptador está disponível por meio da propriedade protegida Adapter da Control classe. 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 métodos do adaptador.

Construtores

Nome Description
ControlAdapter()

Inicializa uma nova instância da classe ControlAdapter.

Propriedades

Nome Description
Browser

Obtém uma referência aos recursos do navegador do cliente que está fazendo a solicitação HTTP atual.

Control

Obtém uma referência ao controle ao qual esse adaptador de controle está anexado.

Page

Obtém uma referência à página em que reside o controle associado a esse adaptador.

PageAdapter

Obtém uma referência ao adaptador de página da página em que reside o controle associado.

Métodos

Nome Description
BeginRender(HtmlTextWriter)

Chamado antes da renderização de um controle. Em uma classe de adaptador derivada, gera marcas de abertura que são exigidas por um destino específico, mas não necessárias para navegadores HTML.

CreateChildControls()

Cria os controles filho específicos de destino para um controle composto.

EndRender(HtmlTextWriter)

Chamado após a renderização de um controle. Em uma classe de adaptador derivada, gera marcas de fechamento que são exigidas por um destino específico, mas não necessárias para navegadores HTML.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadAdapterControlState(Object)

Carrega informações de estado de controle do adaptador que foram salvas durante SaveAdapterControlState() uma solicitação anterior à página em que o controle associado a esse adaptador de controle reside.

LoadAdapterViewState(Object)

Carrega informações de estado de exibição do adaptador que foram salvas durante SaveAdapterViewState() uma solicitação anterior para a página em que o controle associado a esse adaptador de controle reside.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
OnInit(EventArgs)

Substitui o OnInit(EventArgs) método para o controle associado.

OnLoad(EventArgs)

Substitui o OnLoad(EventArgs) método para o controle associado.

OnPreRender(EventArgs)

Substitui o OnPreRender(EventArgs) método para o controle associado.

OnUnload(EventArgs)

Substitui o OnUnload(EventArgs) método para o controle associado.

Render(HtmlTextWriter)

Gera a marcação específica de destino para o controle ao qual o adaptador de controle está anexado.

RenderChildren(HtmlTextWriter)

Gera a marcação específica de destino para os controles filho em um controle composto ao qual o adaptador de controle está anexado.

SaveAdapterControlState()

Salva informações de estado de controle para o adaptador de controle.

SaveAdapterViewState()

Salva informações de estado de exibição para o adaptador de controle.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também