Utilisation de ParseChildrenAttribute
ParseChildrenAttribute est un attribut de métadonnées .NET Framework qui s'applique au niveau de la classe. Il permet à un contrôle de spécifier comment l'analyseur de page doit interpréter les éléments imbriqués dans les balises du contrôle lorsque celui-ci est utilisé par déclaration sur une page ASP.NET. L'attribut ParseChildrenAttribute peut être créé en utilisant des arguments nommés qui correspondent à un indicateur de type Boolean et à une propriété par défaut du contrôle. Pour plus d'informations sur la syntaxe de cet attribut, consultez System.Web.UI.ParseChildrenAttribute.
L'exemple suivant montre comment appliquer l'attribut ParseChildrenAttribute à un contrôle.
[ 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
Pour obtenir un exemple de contrôle marqué avec ParseChildrenAttribute, consultez Exemple de contrôle basé sur un modèle. Lorsque TemplatedFirstControl
est utilisé par déclaration sur une page, les éléments enfants (enfants immédiats) qui figurent entre ses balises de contrôle doivent correspondre aux propriétés de TemplatedFirstControl
, comme le montre l'exemple suivant.
<%-- 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>
Le tableau suivant décrit le cadre d'utilisation à respecter pour ParseChildrenAttribute.
Utilisation de l'attribut | Description |
---|---|
ParseChildrenAttribute(ChildrenAsProperties = true)
ou ParseChildren(true) |
Les éléments (enfants) imbriqués doivent correspondre aux propriétés du contrôle. Les autres éléments (qui ne sont pas des propriétés) et le texte littéral qui figurent entre les balises de contrôle génèrent une erreur d'analyse.
Citons comme exemples le contrôle Repeater et d'autres contrôles dépendants. |
ParseChildrenAttribute(ChildrenAsProperties = false)
ou ParseChildrenAttribute(false) ou ParseChildrenAttribute n'est pas appliqué au contrôle. |
Les éléments (enfants) imbriqués doivent correspondre aux contrôles serveur ASP.NET. L'analyseur de page crée les contrôles enfants et appelle IParserAccessor.AddParsedSubObject pour le contrôle. L'implémentation par défaut de AddParsedSubObject ajoute les contrôles enfants à la collection Controls du contrôle. L'analyseur de page analyse le texte littéral figurant entre les balises en tant qu'instances de LiteralControl.
Citons comme exemple le contrôle Panel. |
ParseChildrenAttribute (ChildrenAsProperties = true, DefaultProperty = "NomPropriété")
ou ParseChildrenAttribute(true, "NomPropriété") |
Le contrôle doit définir une propriété publique nommée PropertyName. Les éléments (enfants) imbriqués doivent correspondre aux éléments enfants de la propriété NomPropriété.
Citons comme exemples les contrôles HtmlTable et HtmlTableRow. Pour en obtenir un exemple, consultez ParseChildrenAttribute, exemple. |
ParseChildrenAttribute(false, "NomPropriété") | Pour l'analyseur de page, cette utilisation équivaut à ParseChildrenAttribute(false). |
Remarque System.Web.UI.WebControls.WebControl est marqué en tant que ParseChildren(true). Un contrôle personnalisé qui dérive de WebControl hérite de ce marquage d'attribut. Vous pouvez substituer l'attribut hérité en appliquant de nouveau l'attribut avec des arguments différents.
Remarque Si ControlBuilderAttribute est appliqué en plus de ParseChildrenAttribute, il peut modifier la logique d'analyse décrite dans le tableau.
Voir aussi
Analyse de contrôle, ParseChildrenAttribute et générateurs de contrôles | ParseChildrenAttribute, exemple