Compartilhar via


Visão Geral Arquitetural do Comportamento de Controle Adaptativo

Este tópico fornece uma visão geral da arquitetura do comportamento do controle adaptável do ASP.NET.Este archtecture permite estender o renderização de controle para acomodar vários tipos diferentes de navegadores, inclusive aqueles em dispositivos móveis.

Comportamento de controle adaptável é o comportamento de controle que é personalizado para dispositivos de destino.O ASP.NET fornece uma arquitetura adaptável que permite estágios de ciclo de vida chave de um controle para serem interceptados e substituídos com comportamento personalizado.Por padrão, a estrutura de página ASP.NET mapeia uma única instância de um adaptador de cada controle para cada solicitação.Na maioria dos casos, esse mapeamento padrão é flexível o suficiente para atender a maioria das necessidades do desenvolvedor.Em casos especializados, um adaptador personalizado pode ser derivado e mapeado para um controle a fim de atender aos requisitos adicionais de comportamento de controle em um determinado dispositivo ou a família de dispositivos.

Um exemplo comum de comportamento adaptável de controle é o processamento adaptável onde uma página da Web ASP.NET é processada especificamente para o navegador ou para marcação.Isso é especialmente útil para gravar aplicativos que suportam os navegadores que usam idiomas diferentes de marcação.Há várias maneiras que você pode controlar o processamento de uma página da Web em ASP.NET, especificando o processamento XHTML padrão do seu aplicativo para fornecer um objeto personalizado ControlAdapter adaptável.Fornecer um objeto ControlAdapter personalizado é uma tarefa avançada e não é necessária na maioria das situações de usuário.

Você pode controlar processamento adaptável nos seguintes aspectos:

  • Configure seu aplicativo para processar várias marcações.

  • Use a classe XhtmlTextWriter ou ChtmlTextWriter para personalizar marcas e atributos de controle.

  • Crie uma classe TextWriter personalizada para processar saída.

  • Usar marcação de dispositivo declarativo ou filtragem de navegador para afetar a maneira como as propriedades de controle são definidas com base nas definições de filtro de dispositivo.

  • Forneça um adaptador de controle personalizado que permite que você substitua um método de ciclo de vida do adaptador sobre o método padrão de ciclo de vida para um controle.

Além de processamento adaptável, outros comportamentos de controle que podem ser adaptados ou especificados de acordo com o dispositivo de destino inclui o seguinte:

  • Processamento de dados de postback.

  • Gerenciando estado de exibição.

  • Impedindo um controle personalizado de ser adaptado.

Páginas ASP.NET e processamento de controle

Processamento padrão

No processamento padrão da página da Web ASP.NET, uma instância da classe HtmlTextWriter é criada e o método RenderControl é chamado recursivamente usando o parâmetro que está definido como a instância da classe HtmlTextWriter.Cada controle na hierarquia da página de controle acrescenta suas marcações ao final do objeto HtmlTextWriter.O conteúdo do HtmlTextWriter resultante é o que é processado para o navegador resultante.

Ao processar conteúdo HTML 3.2 aos clientes, o ASP.NET usa a classe Html32TextWriter automaticamente.Para determinar o tipo de objeto para usar TextWriter, a estrutura página ASP.NET consulta a propriedade TagWriter do objeto Browser.

Por padrão, quando você estiver trabalhando com navegadores que ofereçam suporte a pelo menos HTML 4.0, páginas e controles ASP.NET processam o que está de acordo com o padrão XHTML 1.0 Transitional.Para especificar se o ASP.NET processa a marcação que está de acordo com padrões XHTML, configure o xhtmlConformance elemento (esquema configurações ASP.NET) no arquivo web.config para seu aplicativo.Para obter mais informações sobre LINQ e ASP.NET, consulte O ASP.NET e o XHTML.Para obter mais informações sobre o ciclo de vida da página, consulte Visão Geral do Ciclo de Vida da Página ASP.NET.

Usando um objeto TextWriter personalizado

Por padrão, o ASP.NET usa o objeto TextWriter apropriado para o dispositivo solicitante.Quando você precisar ter mais controle sobre o TextWriter, você pode usar uma classe que herda da classe HtmlTextWriter existente ou você pode criar um text writer personalizado.

As classes XhtmlTextWriter e ChtmlTextWriter são duas classes na estrutura página ASP.NET que herdam as classes HtmlTextWriter e Html32TextWriter, respectivamente.As classes XhtmlTextWriter e ChtmlTextWriter fornecem recursos adicionais de processamento adaptável.Por exemplo:

  • A classe XhtmlTextWriter é útil para processamento de marcação XHTML em dispositivos móveis e fornece métodos para personalizar os atributos de elementos XHTML processados.

  • A classe ChtmlTextWriter é útil para processamento cHTML ou HTML compacto para dispositivos com limitada de memória e potência de CPU, pequenas telas, recursos de formatação limitados, e um número limitado de opções de entrada, como um touch pad de telefone celular.

Se você cria um text writer personalizado ou se você desejar especificar um determinado text writer para processar a saída para um dispositivo específico, você deve mapear o text writer para o dispositivo que está usando o atributo markupTextWriterType do elemento controlAdapters em um arquivo .browser para o aplicativo.

Filtragem de dispositivo

Filtragem de dispositivo permite que você declarativament personalize os aspectos de processamento de saída de uma propriedade de controle de servidor Webe.Você pode aplicar a filtragem para as propriedades de controle, atributos personalizados e modelos.Você também pode usar a filtragem de dispositivo em alguns atributos para as diretivas @ Page e @ Controle.Se vários filtros de dispositivo são especificados para uma propriedade ou um atributo, o filtro mais específico terá precedência.

  1. Definições de filtro de dispositivo que são usadas para filtrar a saída são baseadas na definição de tipos do navegador, conforme definido no seu aplicativo.Os arquivos de definição do navegador padrão são no diretório %SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers.Arquivos de definição do navegador que são especificados na pasta App_Browsers para o aplicativo são mesclados com os arquivos de definição padrão.

Para obter mais informações sobre filtragem de dispositivo, consulte Visão geral sobre filtragem de dispositivo do ASP.NET.Para obter mais informações sobre o formato de arquivo .browser, consulte Navegador Definition Arquivo Esquema (navegadores elemento).

Adaptadores de controle

Visão Geral

Para personalizar o comportamento de uma página ou controle, o ASP.NET permite que você especifique um objeto ControlAdapter que se adapta ou modifica comportamento nos pontos principais no ciclo de vida do controle.Durante cada estágio de ciclo de vida, onde é feita uma chamada para um método de ciclo de vida, a página ASP.NET Framework verifica para ver se há um adaptador associado para o controle e chamadas no método associado do adaptador em vez do método do controle.Em muitos casos, o método do adaptador pode simplesmente demorar a volta para o método do controle.Uma exceção para esse comportamento são adaptadores para gerenciamento de estado em que o comportamento adaptável é aditivo ao estado do controle.

Situações em que você poderia querer substituir o comportamento de um controle com um adaptador de controle incluem as seguintes:

  • Para fornecer processamento de destino específico durante um estágio específico de ciclo de vida de controle.

    Por exemplo, você pode usar o método OnInit da classe ControlAdapter para executar tarefas de inicialização que são específicas para o controle que o adaptador está conectado e específico para o dispositivo de destino que o controle é processado.

  • Para personalizar processamento de destino específico.

    Por exemplo, você pode usar os métodos Render e RenderChildren para gerar marcação de destino específico.

Os controles WebControlAdapter e PageAdapter

A classe ControlAdapter é uma classe abstrata que define a funcionalidade básica para todos os adaptadores.Ela serve como a classe base para as classes WebControlAdapter e PageAdapter.

A classe WebControlAdapter é o ponto de partida para processamento de controles que herdam adaptativamente da classe WebControl.Além de métodos da classe ControlAdapter, a classe WebControlAdapter adiciona vários métodos que são específicos para processar as marcas.

A classe abstrata PageAdapter é o ponto de partida para processar um página da Web adaptativamente.

Além disso, a classe PageAdapter define propriedades e métodos que permitem processamento adaptável no contexto de típicas tarefas em nível da página, como cache ou gerenciar persistência de estado da página.Por exemplo, além da cache de páginas com base em parâmetros de destino independente, você pode ter cache com base no tipo de navegador de destino.Nesse cenário, você poderia substituir a propriedade CacheVaryByParams da classe PageAdapter para retornar uma lista de parâmetros GET ou POST adicionais para controlar cache de destino específico.

Semelhante a criadores de texto personalizados, para adaptadores de controle personalizado serem reconhecidos por estrutura página ASP.NET, os adaptadores de controle personalizado devem ser definidos no elemento controlAdapters no arquivo .browser para o aplicativo.Para obter mais informações sobre o formato de arquivo .browser, consulte Navegador Definition Arquivo Esquema (navegadores elemento).

Padrões de Design para criar adaptadores incluem as seguintes diretrizes:

  • Um controle que herda da classe Control deve ter um adaptador que herda da classe ControlAdapter.

  • Um controle que herda da classe WebControl deve ter um adaptador que herda da classe WebControlAdapter.

  • Os desenvolvedores criando controles personalizados que precisem estender a funcionalidade do adaptador devem criar adaptadores de classe base para seus controles.

Consulte também

Conceitos

Visão Geral do Ciclo de Vida da Página ASP.NET

O ASP.NET e o XHTML

Visão geral sobre filtragem de dispositivo do ASP.NET

Referência

xhtmlConformance elemento (esquema configurações ASP.NET)

Navegador Definition Arquivo Esquema (navegadores elemento)

Outros recursos

Desenvolvendo Controles Personalizados ASP.NET Server