Partager via


Vue d'ensemble du générateur de contrôles

Un générateur de contrôles est une classe qui détermine la manière dont un contrôle serveur est analysé lorsqu'il est utilisé par déclaration sur une page ASP.NET. Chaque contrôle ASP.NET est associé à un générateur de contrôles par défaut (System.Web.UI.ControlBuilder). Pendant l'analyse de page, le générateur de contrôles par défaut vérifie si un contrôle est marqué avec l'attribut ParseChildren(true). Si c'est le cas, les éléments imbriqués dans les balises d'ouverture et de fermeture du contrôle doivent correspondre aux propriétés du contrôle. Tout autre élément imbriqué génère une erreur d'analyse. Pour plus d'informations, consultez Utilisation de ParseChildrenAttribute. Si un contrôle n'est pas marqué en tant que ParseChildren(true), le générateur de contrôles 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. Tout texte littéral figurant entre les balises de contrôle imbriquées est analysé en tant que LiteralControl.

Si vous voulez fournir une autre logique d'analyse (personnalisée) pour votre contrôle, vous pouvez créer votre propre générateur de contrôles en effectuant une dérivation à partir de ControlBuilder et en substituant les méthodes de la classe de base. Vous devez associer le générateur de contrôles personnalisé à votre contrôle en marquant ce dernier avec System.Web.UI.ControlBuilderAttribute, comme le montre l'exemple suivant.

// 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

Le tableau suivant indique quelques méthodes de ControlBuilder que vous pouvez substituer lors de la définition d'un générateur de contrôles personnalisé. Pour obtenir une liste complète des membres de ControlBuilder, consultez ControlBuilder.

Méthode de ControlBuilder Effet
AllowWhitespaceLiterals Spécifie si des espaces blancs intermédiaires entre les balises de contrôles enfants imbriqués sont ajoutées à la collection Controls en tant qu'instances LiteralControl. Pour en obtenir un exemple, consultez Exemple de générateur de contrôles personnalisé.
AppendSubBuilder Ajoute un générateur de contrôles pour les contrôles enfants.
GetChildControlType Retourne le Type d'un contrôle enfant basé sur le nom de ses balises. Utilisez cette méthode pour filtrer les contrôles enfants qui sont ajoutés à la collection Controls. Pour en obtenir un exemple, consultez le Démarrage rapide ASP.NET —> Web Forms ASP.NET —> Création de contrôles personnalisés.

Pour obtenir un exemple de générateur de contrôles, consultez Exemple de générateur de contrôles personnalisé.

Remarque   Une autre façon de substituer la logique d'analyse consiste à remplacer la méthode AddParsedSubObject héritée de Control. Un exemple de cette approche est fourni dans le Démarrage rapide ASP.NET —> Web Forms ASP.NET —> Création de contrôles personnalisés —> Substitution d'analyse de contrôle. Notez que l'analyse par un générateur de contrôles se produit au moment de la compilation, alors que la méthode AddParsedSubObject est mise en œuvre au moment de l'exécution (ce qui peut avoir une incidence sur les performances).

Voir aussi

Exemple de générateur de contrôles personnalisé | Analyse de contrôle, ParseChildrenAttribute et générateurs de contrôles | ControlBuilderAttribute