Compartir a través de


Introducción al generador de controles

Un generador de controles es una clase que controla cómo se analiza un control de servidor cuando se utiliza de forma declarativa en una página ASP.NET. Todo control de ASP.NET está asociado a un generador de controles predeterminado (System.Web.UI.ControlBuilder). Durante el análisis de páginas, el generador de controles predeterminado comprueba si un control está marcado o no con el atributo ParseChildren(true). Si lo está, los elementos anidados dentro de las etiquetas de apertura y de cierre del control deben corresponderse con las propiedades del control. Todos los demás elementos anidados genera un error del analizador. Vea Utilizar ParseChildrenAttribute para obtener más detalles. Si un control no está marcado como ParseChildren(true), el generador de controles crea los controles secundarios y llama a IParserAccessor.AddParsedSubObject en el control. La implementación predeterminada de AddParsedSubObject agrega los controles secundarios a la colección Controls del control. Todo texto literal que haya entre las etiquetas anidadas del control se analizará como LiteralControl.

Si desea proporcionar otra lógica de análisis (personalizada) para su control, puede crear su propio generador de controles si lo deriva de ControlBuilder y reemplaza los métodos de la clase base. Debe asociar el generador de controles personalizado a su control; para ello, marque el control con System.Web.UI.ControlBuilderAttribute, como se muestra en el siguiente ejemplo.

// Define a custom control builder.
public class MyControlBuilder : ControlBuilder {...}

// Associate it with your control by applying a 
// ControlBuilder attribute.
[ControlBuilder(typeof(MyControlBuilder))]
public class MyControl : Control {...}
[Visual Basic]
' Define a custom control builder.
Public Class MyControlBuilder
   Inherits ControlBuilder
   ...
End Class

' Associate it with your control by applying a 
' ControlBuilder attribute.
<ControlBuilder(GetType(MyControlBuilder))> _ 
Public Class MyControl
   Inherits Control
   ...
End Class

En la siguiente tabla se enumeran algunos de los métodos de ControlBuilder que probablemente reemplazará cuando defina un generador de controles personalizado. Para obtener una lista completa de todos los miembros de ControlBuilder, vea ControlBuilder.

Método de ControlBuilder Qué hace
AllowWhiteSpaceLiterals Especifica si se agregan o no espacios en blanco intermedios entre las etiquetas anidadas del control secundario a la colección Controls como instancias de LiteralControl. Para obtener un ejemplo, vea Ejemplo de generador de controles personalizado.
AppendSubBuilder Agrega un generador de controles para controles secundarios.
GetChildControlType Devuelve el tipo (Type) de un control secundario basándose en su nombre de etiqueta. Utilice este método para filtrar los controles secundarios que se agregan a la colección Controls. Para obtener un ejemplo, vea el Tutorial de ASP.NET —> Formularios Web Forms ASP.NET —> Crear controles personalizados.

Para obtener un ejemplo de un generador de controles, vea Ejemplo de generador de controles personalizado.

Nota   Otra forma de reemplazar la lógica de análisis consiste en reemplazar el método AddParsedSubObject heredado de Control. En el Tutorial de ASP.NET —> Formularios Web Forms ASP.NET —> Crear controles personalizados —> Reemplazar el análisis de controles se ofrece un ejemplo. Tenga en cuenta que el análisis realizado por un generador de controles tiene lugar en tiempo de compilación, mientras que el método AddParsedSubObject se ejecuta en tiempo de ejecución (y podría producir una disminución del rendimiento).

Vea también

Ejemplo de generador de controles personalizado | Análisis de controles, ParseChildrenAttribute y generadores de controles | ControlBuilderAttribute