ControlAdapter Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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 do navegador ou da 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 algum recurso. 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 derivadas 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 herdados 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 de 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 controles em si 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 para o 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 de volta 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 de volta no 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 além da fornecida pelo Control.Render controle .
Você deve garantir que o .NET Framework execute 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 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, usar BeginRender e EndRender poderá tornar desnecessário substituir Render. O comportamento padrão dos BeginRender métodos e EndRender é 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 , LoadAdapterControlState, SaveAdapterViewStatee LoadAdapterViewState . SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlStatee LoadAdapterViewState são chamados quando os estados de controle privado e exibição são salvos e carregados, respectivamente.
Os OnInitmétodos base , OnLoad, OnPreRendere OnUnload chamam de volta nos métodos de classe correspondentes Control . Portanto, 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.
Opcionalmente, os controles e adaptadores implementam as IPostBackDataHandler interfaces e 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 , RaisePostDataChangedEvente RaisePostBackEvent , conforme necessário. Se os dados de postback não forem reconhecidos no adaptador, ele deverá chamar de volta no controle para processá-los. Manipuladores de eventos subsequentes também devem chamar de volta no controle.
Notas aos Implementadores
Quando você herda da ControlAdapter classe , um controle que requer a funcionalidade do adaptador geral deve ter uma classe base de adaptador correspondente, nomeada no padrão ControlType
Adapter
(por exemplo, TextBoxAdapter
). O adaptador deve, no mínimo, retornar uma instância fortemente tipada do controle por meio de sua Control propriedade.
- 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
). Os adaptadores para um controle devem ser implementados em umAdapters
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 ControlType
Adapter
.
Todos os adaptadores especializados devem ser definidos para o controle especializado em todos os nós de dispositivo na configuração de arquivos .browser.
Um controle implementado corretamente não deve assumir que um adaptador está anexado ou que o adaptador anexado implemente uma interface específica. Em vez disso, ele deve verificar isso antes de chamar.
É possível simular a substituição de métodos de evento 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 de 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
ControlAdapter() |
Inicializa uma nova instância da classe ControlAdapter. |
Propriedades
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 o controle associado a esse adaptador está. |
PageAdapter |
Obtém uma referência ao adaptador de página da página em que o controle associado está. |
Métodos
BeginRender(HtmlTextWriter) |
Chamado antes da renderização de um controle. 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. |
CreateChildControls() |
Cria os controles filho de destino específico de um controle de composição. |
EndRender(HtmlTextWriter) |
Chamado depois da renderização de um controle. 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. |
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 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á. |
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á. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnInit(EventArgs) |
Substitui o método OnInit(EventArgs) do controle associado. |
OnLoad(EventArgs) |
Substitui o método OnLoad(EventArgs) do controle associado. |
OnPreRender(EventArgs) |
Substitui o método OnPreRender(EventArgs) do controle associado. |
OnUnload(EventArgs) |
Substitui o método OnUnload(EventArgs) do controle associado. |
Render(HtmlTextWriter) |
Gera a marcação específica para o destino para o controle ao qual o adaptador de controle está anexado. |
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. |
SaveAdapterControlState() |
Salva informações de estado do controle do adaptador de controle. |
SaveAdapterViewState() |
Salva informações de estado de exibição do adaptador de controle. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |