Utilizar ParseChildrenAttribute
ParseChildrenAttribute es un atributo de metadatos de .NET Framework que se aplica en el nivel de clase. Permite a un control especificar cómo interpretará el analizador de páginas los elementos anidados dentro de las etiquetas del control cuando éste se utilice de forma declarativa en una página ASP.NET. Es posible crear ParseChildrenAttribute mediante argumentos con nombre que correspondan a un indicador booleano y una propiedad predeterminada del control. Para obtener detalles acerca de la sintaxis de este atributo, vea System.Web.UI.ParseChildrenAttribute.
En el siguiente ejemplo se muestra cómo aplicar ParseChildrenAttribute a un control.
[ ParseChildren(ChildrenAsProperties = true)]
// Or apply as [ ParseChildren(true)].
public class TemplatedFirstControl : Control, INamingContainer {...}
[Visual Basic]
<ParseChildren(ChildrenAsProperties := True)> _
Public Class TemplatedFirstControl
Inherits Control
Implements INamingContainer
...
End Class
Para ver un ejemplo de un control marcado con ParseChildrenAttribute, vea Ejemplo de control basado en plantilla. Cuando TemplatedFirstControl
se utiliza de forma declarativa en una página, los elementos secundarios (secundarios inmediatos) dentro de las etiquetas del control deben corresponderse con las propiedades de TemplatedFirstControl
, como se muestra en el ejemplo siguiente.
<%-- FirstTemplate is a property of TemplatedFirstControl. --%>
<%-- Custom is the tag prefix for TemplatedFirstControl on the page as defined in the <%@ Register %> directive. --%>
<Custom:TemplatedFirstControl id = "First" Text= "The time on the server is " runat=server>
<FirstTemplate>
<h3><font face="Verdana" color = "red"><%# Container.Text %> <%# Container.DateTime %>
</font></h3>
</FirstTemplate>
</Custom:TemplatedFirstControl>
En la siguiente tabla se describe el modelo de uso de ParseChildrenAttribute.
Uso del atributo | Descripción |
---|---|
ParseChildrenAttribute(ChildrenAsProperties = true)
O bien ParseChildren(true) |
Los elementos anidados (secundarios) deben corresponderse con las propiedades del control. Otros elementos (distintos de propiedades) y texto literal entre las etiquetas del control generan un error del analizador.
Ejemplos: Repeater y otros controles enlazados a datos. |
ParseChildrenAttribute(ChildrenAsProperties = true)
O bien ParseChildrenAttribute(ChildrenAsProperties = true) O bien ParseChildrenAttribute no se aplica al control. |
Los elementos anidados (secundarios) deben corresponderse con controles de servidor de ASP.NET. El analizador de páginas 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. El analizador de páginas analiza el texto literal que hay entre las etiquetas como instancias de LiteralControl.
Ejemplo: Panel. |
ParseChildrenAttribute (ChildrenAsProperties = true, DefaultProperty = "PropertyName")
O bien ParseChildrenAttribute (ChildrenAsProperties = true, DefaultProperty = "PropertyName") |
El control debe definir una propiedad pública denominada PropertyName. Los elementos anidados (secundarios) deben corresponderse con los elementos secundarios de la propiedad PropertyName.
Ejemplos: HtmlTable, HtmlTableRow. Para obtener un ejemplo, vea Ejemplo de ParseChildrenAttribute. |
ParseChildrenAttribute(false, "PropertyName") | El analizador de páginas hace este uso igual que ParseChildrenAttribute(false). |
Nota System.Web.UI.WebControls.WebControl se marca como Parse Children(true). Un control personalizado que se derive de WebControl heredará este marcado de atributo. Puede reemplazar el atributo heredado si vuelve a aplicar el atributo con otros argumentos diferentes.
Nota Si se aplica ControlBuilderAttribute además de ParseChildrenAttribute, puede modificar la lógica de análisis descrita en la tabla.
Vea también
Análisis de controles, ParseChildrenAttribute y generadores de controles | Ejemplo de ParseChildrenAttribute