La création de contrôles serveur dans Asp.net est la même que pour les contrôles Windows Form. Il existe plusieurs manières :
1. Contrôle utilisateur
2. Contrôles personnalisés dérivés de Control et WebControl
3. Développez les contrôles du serveur Asp.net existants
Les contrôles utilisateur ont l'extension .ascx et sont enregistrés sous forme de fichiers texte. Les contrôles utilisateur n'ont pas besoin d'être précompilés comme les contrôles serveur dérivés de Control et WebControl. Lorsque les contrôles utilisateur sont utilisés dans des pages .aspx, l'analyseur de page démarre dynamiquement. généré à partir d’un fichier aspx et compilé dans un assembly. Ses avantages sont les suivants : il résout la réutilisation du code, et chaque contrôle utilisateur a son propre modèle objet, et son langage d'écriture n'a rien à voir avec le langage de la page .aspx.
S'étendant du contrôle de serveur Asp.net existant, il améliore principalement les fonctions du contrôle de serveur natif .net pour répondre aux besoins de notre développement et des utilisateurs finaux.
Les contrôles personnalisés dérivés de Control et WebControl sont déployés sous la forme de bibliothèques de classes compilées.
Les points 1 et 3 ci-dessus ne seront pas expliqués dans cette série. Dans cette série, seuls les contrôles serveur dérivés de Control et WebControl seront expliqués.
Si nous voulons écrire un contrôle personnalisé, il nous suffit d'hériter de Control et WebControl. Control a implémenté l'interface IComponent, et WebControl lui-même est dérivé de Control, ils prennent donc également en charge la conception visuelle des composants.
Méthode Render et classe HtmlTextWriter Lorsque nous dérivons un contrôle serveur Asp.net à partir d'une classe Control, la classe Control nous fournit un Render surchargeable et une instance du type HtmlTextWriter. La méthode Render consiste à envoyer le contenu du contrôle serveur au contenu fourni. HtmlTextWriter et HtmlTextWriter encapsulent la fonction d'écriture d'un flux de texte HTML.
utiliser le système ; en utilisant System.Collections.Generic ; en utilisant System.Text ;
espace de noms ClassLibrary1 { classe publique Control1 : System.Web.UI.Control { remplacement protégé void Render (écrivain System.Web.UI.HtmlTextWriter) { écrivain.Write("Je suis là."); } }
classe publique Control2 : System.Web.UI.WebControls.WebControl { remplacement protégé void Render (écrivain System.Web.UI.HtmlTextWriter) { writer.Write("Je suis là aussi."); } } } |
Dans le code ci-dessus, nous définissons un Control1 et un Control2, qui héritent respectivement de Control et WebControl. Alors, quelles sont les différences essentielles entre eux ? Regardez d’abord l’effet suivant :
À partir des effets ci-dessus, il n'est pas difficile de voir la différence entre eux. La classe WebControl prend en charge les styles via des attributs tels que la police, la hauteur, la couleur d'arrière-plan, etc. Alors, quand choisissons-nous de dériver de Control, et quand choisissons-nous de dériver de WebControl ? Si le contrôle souhaite générer des éléments non visuels ou les afficher sur des clients non HTML, il sera dérivé de Control, tel que SqlDataSource ; s'il doit fournir au client du HTML visuel, alors nous dériverons de WebControl, tel que TextBox ; .