ControlAdapter Classe

Definição

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

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

Observações

Os adaptadores de controlo são componentes que sobrepõem certos Control métodos de classe e eventos no seu ciclo de execução para permitir o manuseamento específico do navegador ou da marcação. .NET Framework mapeia um único adaptador de controlo derivado para um objeto Control para cada pedido de cliente.

Um adaptador modifica um controlo para um navegador específico ou classe de navegadores ou atua como um filtro arbitrário numa funcionalidade. Normalmente, o adaptador é definido pela linguagem de marcação que o navegador utiliza (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 classes de navegador ou que a inclusão da adaptabilidade nas HtmlTextWriter classes torne desnecessária a utilização de um adaptador de controlo.

Um adaptador para uma classe de controlo aplica-se a todos os controlos que herdam dessa classe, a menos que existam adaptadores mais especializados. 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 sim de uma das classes base específicas de adaptadores de alvo que fornecem funcionalidades adicionais específicas ao tipo de controlo e ao navegador de destino ou à renderização específica necessária.

Os próprios controlos não requerem necessariamente um adaptador. Se os controlos forem estendidos através da composição, geralmente os adaptadores de controlo filho são suficientes.

Cada controlo tem mapeamentos explícitos para adaptadores através dos ficheiros de definição .browser. Assim, qualquer acesso à Control.Adapter propriedade utiliza o HttpBrowserCapabilities objeto extraído dos ficheiros de definição do navegador para realizar a pesquisa do mapeamento do adaptador para controlo.

Durante o processamento, o .NET Framework interceta chamadas para os métodos sobrescritivos de um controlo que podem ser específicos do alvo. Se um adaptador de controlo estiver ligado, o .NET Framework chama os métodos do adaptador associados.

O adaptador realiza a renderização do controlo através do Render método. Se for sobreposto, Render potencialmente não deve chamar a implementação da classe base porque ela realiza uma chamada de retorno ao Control.Render método. Isto pode fazer com que a renderização ocorra duas vezes, uma pelo adaptador e outra pelo controlo.

O Render método base recua para o Control.Render método do controlo. Assim, se sobrescreveres Render, não deves chamar a implementação da classe base a menos que a renderização que implementas seja adicional à fornecida pelo Control.Render controlo.

Deve garantir que o .NET Framework realiza a interceção para adaptadores dos controlos filhos. Podes fazer isto chamando o RenderChildren método base, que chama o Control.RenderChildren método do controlo, do teu Render override.

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

Para manter a sua própria informação de estado, um adaptador de controlo pode sobrescrever os SaveAdapterControlState, LoadAdapterControlState, SaveAdapterViewState, e LoadAdapterViewState métodos. SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState, e LoadAdapterViewState são chamados quando os estados de controlo privado e de vista são guardados e carregados, respetivamente.

Os OnInitmétodos , OnLoad, OnPreRender, e OnUnload base chamam de volta os métodos de classe correspondentes Control . Assim, qualquer um ControlAdapter destes métodos que seja sobreposto deve chamar os seus métodos base; caso contrário, o evento associado ao Control método de classe não será levantado.

Os controlos e adaptadores implementam opcionalmente as IPostBackDataHandler interfaces and IPostBackEventHandler . O .NET Framework determina se existe um adaptador e se o adaptador implementa estas interfaces. Se o fizer, o adaptador deverá sobrepor os LoadPostDatamétodos , RaisePostDataChangedEvent, e RaisePostBackEvent conforme necessário. Se os dados de postback não forem reconhecidos no adaptador, deve ser chamado de volta ao controlo para processá-los. Os gestores de eventos subsequentes também devem chamar de volta o controlo.

Notas para Implementadores

Quando herdas da ControlAdapter classe, um controlo que exija funcionalidade geral do adaptador deve ter uma classe base de adaptador correspondente, nomeada no padrão ControlTypeAdapter (por exemplo, TextBoxAdapter). O adaptador deve, no mínimo, devolver uma instância fortemente tipada do controlo através da sua Control propriedade.

  1. Adaptadores de controlo para um dado tipo de controlo e linguagem de marcação devem ser nomeados no padrão MarkupControlTypeAdapter (por exemplo, XhtmlTextBoxAdapter). Adaptadores para um controlo devem ser implementados num Adapters subnamespace.

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

Quaisquer adaptadores especializados devem ser definidos para o controlo especializado sob todos os nós do dispositivo nos ficheiros de configuração .browser.

Um controlo devidamente implementado não deve assumir que um adaptador está ligado, ou que o adaptador ligado implementa uma interface específica. Em vez disso, deve verificar estes antes de ligar.

É possível simular métodos de eventos protegidos por sobreposição no controlo, como o OnClick(EventArgs) método do LinkButton. Primeiro, cria uma classe adaptadora com um OnClick método. Depois cria um novo controlo derivado de LinkButton e sobrepõe o OnClick(EventArgs) método. O método sobreposto OnClick(EventArgs) chama o OnClick método do adaptador. O objeto adaptador está disponível através da propriedade protegida Adapter da Control classe. A Adapter propriedade do controlo é null quando não existe um adaptador associado, por isso qualquer código deve verificar essa condição antes de chamar os métodos do adaptador.

Construtores

Name Description
ControlAdapter()

Inicializa uma nova instância da ControlAdapter classe.

Propriedades

Name Description
Browser

Obtém uma referência às capacidades do navegador do cliente que faz o pedido HTTP atual.

Control

Obtém uma referência ao controlo ao qual este adaptador de controlo está ligado.

Page

Recebe uma referência para a página onde está o controlo associado a este adaptador.

PageAdapter

Obtém uma referência ao adaptador de página da página onde reside o controlo associado.

Métodos

Name Description
BeginRender(HtmlTextWriter)

Chamado antes da renderização de um controlo. Numa classe adaptadora derivada, gera etiquetas de abertura que são exigidas por um destino específico mas não necessárias pelos navegadores HTML.

CreateChildControls()

Cria os controlos filhos específicos do alvo para um controlo composto.

EndRender(HtmlTextWriter)

Chamado após a renderização de um controlo. Numa classe adaptadora derivada, gera etiquetas de fecho que são exigidas por um destino específico mas não necessárias pelos navegadores HTML.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadAdapterControlState(Object)

Carrega a informação do estado de controlo do adaptador que foi guardada SaveAdapterControlState() durante um pedido anterior na página onde reside o controlo associado a este adaptador.

LoadAdapterViewState(Object)

O adaptador carrega a informação de estado da visualização que foi guardada durante SaveAdapterViewState() um pedido anterior para a página onde reside o controlo associado a este adaptador de controlo.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnInit(EventArgs)

Sobrepõe o OnInit(EventArgs) método para o controlo associado.

OnLoad(EventArgs)

Sobrepõe o OnLoad(EventArgs) método para o controlo associado.

OnPreRender(EventArgs)

Sobrepõe o OnPreRender(EventArgs) método para o controlo associado.

OnUnload(EventArgs)

Sobrepõe o OnUnload(EventArgs) método para o controlo associado.

Render(HtmlTextWriter)

Gera a marcação específica do alvo para o controlo ao qual o adaptador de controlo está ligado.

RenderChildren(HtmlTextWriter)

Gera a marcação específica do alvo para os controlos filhos num controlo composto ao qual o adaptador de controlo está ligado.

SaveAdapterControlState()

Guarda a informação do estado de controlo para o adaptador de controlo.

SaveAdapterViewState()

Guarda a informação do estado da vista para o adaptador de controlo.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também