Crear controles de servidor en Asp.net es lo mismo que los controles de Windows Form. Hay varias formas:
1. control de usuario
2. Controles personalizados derivados de Control y WebControl
3. Ampliar los controles del servidor Asp.net existentes
Los controles de usuario tienen la extensión .ascx y se guardan como archivos de texto. No es necesario precompilarlos como los controles de servidor derivados de Control y WebControl. Cuando los controles de usuario se utilizan en páginas .aspx, el analizador de páginas comienza dinámicamente desde . generado a partir de un archivo aspx y compilado en un ensamblaje. Sus ventajas son: resuelve la reutilización de código, cada control de usuario tiene su propio modelo de objetos y su lenguaje de escritura no tiene nada que ver con el lenguaje de la página .aspx.
Al expandirse desde el control del servidor Asp.net existente, mejora principalmente las funciones del control del servidor nativo .net para satisfacer las necesidades de nuestros usuarios finales y de desarrollo.
Los controles personalizados derivados de Control y WebControl se implementan en forma de bibliotecas de clases compiladas.
Los puntos 1 y 3 anteriores no se explicarán en esta serie. En esta serie, solo se explicarán los controles del servidor derivados de Control y WebControl.
Si queremos escribir un control personalizado, solo necesitamos heredar de Control y WebControl ha implementado la interfaz IComponent, y WebControl se deriva de Control, por lo que también admiten el diseño visual de componentes.
Método Render y clase HtmlTextWriter Cuando derivamos un control de servidor Asp.net de una clase Control, la clase Control nos proporciona un Render sobrecargable y una instancia del tipo HtmlTextWriter. El método Render es para enviar el contenido del control del servidor al proporcionado. Objeto HtmlTextWriter, y HtmlTextWriter encapsula la función de escribir flujo de texto HTML.
usando Sistema; usando System.Collections.Generic; usando System.Text;
espacio de nombres ClassLibrary1 { clase pública Control1: System.Web.UI.Control { anulación protegida void Render (escritor System.Web.UI.HtmlTextWriter) { escritor.Write("Estoy aquí."); } }
clase pública Control2: System.Web.UI.WebControls.WebControl { anulación protegida void Render (escritor System.Web.UI.HtmlTextWriter) { escritor.Write("Yo también estoy aquí."); } } } |
En el código anterior, definimos Control1 y Control2, que heredan de Control y WebControl respectivamente. Entonces, ¿cuáles son las diferencias esenciales entre ellos? Primero observe el siguiente efecto:
A partir de los efectos anteriores, no es difícil ver la diferencia entre ellos. La clase WebControl proporciona soporte para estilos a través de atributos, como fuente, altura, color de fondo, etc. Entonces, ¿cuándo elegimos derivar de Control y cuándo elegimos derivar de WebControl? Si el control desea generar elementos no visuales o mostrarlos a clientes que no sean HTML, se derivará de Control, como SqlDataSource, si es para proporcionar al cliente HTML visual, entonces derivaremos de WebControl, como TextBox; .