Partager via


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