Criar controles de servidor no Asp.net é igual aos controles do Windows Form. Existem várias maneiras:
1. Controle do usuário
2. Controles personalizados derivados de Control e WebControl
3. Expanda os controles de servidor Asp.net existentes
Os controles de usuário têm extensão .ascx e são salvos como arquivos de texto. Os controles de usuário não precisam ser pré-compilados como controles de servidor derivados de Control e WebControl. Quando os controles de usuário são usados em páginas .aspx, o analisador de página é iniciado dinamicamente. gerado a partir de um arquivo aspx e compilado em um assembly. Suas vantagens são: resolve o reaproveitamento de código, cada controle de usuário possui seu próprio modelo de objeto e sua linguagem de escrita não tem nada a ver com a linguagem da página .aspx.
Expandindo o controle de servidor Asp.net existente, ele aprimora principalmente as funções do controle de servidor nativo .net para atender às necessidades de nosso desenvolvimento e dos usuários finais.
Os controles personalizados derivados de Control e WebControl são implantados na forma de bibliotecas de classes compiladas.
Os itens 1 e 3 acima não serão explicados nesta série, apenas os controles de servidor derivados de Control e WebControl serão explicados.
Se quisermos escrever um controle customizado, precisamos apenas herdar de Control e WebControl Control implementou a interface IComponent, e o próprio WebControl é derivado de Control, portanto, eles também suportam o design visual de componentes.
Método Render e classe HtmlTextWriter Quando derivamos um controle de servidor Asp.net de uma classe Control, a classe Control nos fornece um Render sobrecarregável e uma instância do tipo HtmlTextWriter para enviar o conteúdo do controle do servidor para o fornecido. objeto HtmlTextWriter e HtmlTextWriter encapsula a função de escrever fluxo de texto HTML.
usando o sistema; usando System.Collections.Generic; usando System.Text;
namespace ClassLibrary1 { classe pública Control1: System.Web.UI.Control { substituição protegida void Render (escritor System.Web.UI.HtmlTextWriter) { escritor.Write("Estou aqui."); } }
classe pública Control2: System.Web.UI.WebControls.WebControl { substituição protegida void Render (escritor System.Web.UI.HtmlTextWriter) { escritor.Write("Eu também estou aqui."); } } } |
No código acima, definimos Control1 e Control2, que herdam de Control e WebControl respectivamente. Primeiro observe o seguinte efeito:
A partir dos efeitos acima, não é difícil ver a diferença entre eles. A classe WebControl fornece suporte para estilos através de atributos, como fonte, altura, cor de fundo, etc. Então, quando escolhemos derivar do Control e quando escolhemos derivar do WebControl? Se o controle quiser gerar elementos não visuais ou exibi-los para clientes não HTML, ele será derivado do Control, como SqlDataSource, se for para fornecer HTML visual ao cliente, então derivaremos do WebControl, como TextBox; .