web-dev-qa-db-fra.com

Quelle est la différence entre User Control, Web Control, RenderControl et CompositeControl?

Quelle est la différence, quels sont les termes officiels, y a-t-il des termes obsolètes dans ASP.NET 3.5?

50
Thomas Jespersen

UserControl : un contrôle personnalisé, se terminant par .ascx, qui est composé d'autres contrôles Web. C'est presque comme une petite version d'une page Web aspx. Il se compose d'une interface utilisateur (l'ascx) et de codebehind. Ne peut pas être réutilisé dans d'autres projets en référençant une DLL.

WebControl : Un contrôle hébergé sur une page Web ou dans un UserControl. Il se compose d'une ou plusieurs classes, travaillant en tandem, et est hébergé sur une page aspx ou dans un UserControl. Les WebControls n'ont pas de "page" d'interface utilisateur et doivent rendre leur contenu directement. Ils peuvent être réutilisés dans d'autres applications en référençant leurs DLL.

RenderedControl : n'existe pas. Peut être synonyme de WebControl. Peut indiquer que le contrôle est écrit directement dans HttpResponse plutôt que rendu dans une page aspx.

CompositeControl: entre UserControls et WebControls. Ils codent comme UserControls, car ils sont composés d'autres contrôles. Il n'y a pas d'interface graphique pour la composition du contrôle et la prise en charge de l'édition de l'interface utilisateur des CompositeControls doit être codée par le concepteur de contrôle. Le compositing se fait dans le codebehind. CompositeControls peut être réutilisé dans d'autres projets comme WebControls.

48
Will

Vous avez oublié le ServerControl.

À ma connaissance, c'est comme ça:

  • Il n'y a que deux types de contrôles différents: UserControl et ServerControl
  • Les CompositeControls sont en quelque sorte des UserControls "avancés". Trouvez plus d'informations sur Blog Scott Guthries .
  • Tous sont des WebControls (car ils sont tous dérivés de System.Web.UI.Control)
  • Ils sont tous rendus de quelque façon que ce soit, donc je voudrais les voir tous comme des contrôles rendus.

Depuis MSDN:

Contrôle utilisateur

Dans ASP.NET: contrôle serveur créé de manière déclarative à l'aide de la même syntaxe qu'une page ASP.NET et enregistré en tant que fichier texte avec une extension .ascx. Les contrôles utilisateur permettent de partitionner et de réutiliser les fonctionnalités de la page. À la première demande, le framework de page analyse un contrôle utilisateur dans une classe qui dérive de System.Web.UI.UserControl et compile cette classe dans un assembly, qu'il réutilise lors des requêtes suivantes. Les contrôles utilisateur sont faciles à développer en raison de leur création et déploiement de style page sans compilation préalable.

Contrôle serveur

Un composant côté serveur qui encapsule l'interface utilisateur et les fonctionnalités associées. Un contrôle serveur ASP.NET dérive directement ou indirectement de la classe System.Web.UI.Control. Le surensemble des contrôles serveur ASP.NET comprend les contrôles serveur Web, les contrôles serveur HTML et les contrôles mobiles ASP.NET. La syntaxe de page d'un contrôle serveur ASP.NET inclut un attribut runat = "server" sur la balise du contrôle. Voir aussi: contrôle serveur HTML, contrôles serveur de validation, contrôle serveur Web.

8
JRoppert

Comme les formulaires Web, les contrôles utilisateur peuvent être créés dans le concepteur visuel ou ils peuvent être écrits avec du code distinct du HTML. Ils peuvent également prendre en charge les événements d'exécution. Cependant, étant donné que les contrôles utilisateur Web sont compilés dynamiquement au moment de l'exécution, ils ne peuvent pas être ajoutés à la boîte à outils et ils sont représentés par un simple espace réservé lorsqu'ils sont ajoutés à une page.

Cela rend les contrôles utilisateur Web plus difficiles à utiliser si vous êtes habitué à la prise en charge complète de Visual Studio .NET au moment de la conception, y compris la fenêtre Propriétés et les aperçus de la vue Conception. De même, la seule façon de partager le contrôle utilisateur entre les applications est de placer une copie distincte dans chaque application, ce qui nécessite plus de maintenance si vous apportez des modifications au contrôle.

Les contrôles personnalisés Web sont du code compilé, ce qui les rend plus faciles à utiliser mais plus difficiles à créer. Les contrôles personnalisés Web doivent être créés dans du code. Une fois que vous avez créé le contrôle, vous pouvez l'ajouter à la boîte à outils et l'afficher dans un concepteur visuel avec prise en charge complète de la fenêtre Propriétés et toutes les autres fonctionnalités de conception des contrôles serveur ASP.NET. De plus, vous pouvez installer une seule copie du contrôle personnalisé Web dans le cache d'assembly global et la partager entre les applications, ce qui facilite la maintenance.

3
Govardhan

Contrairement à la réponse de Will, il est possible de réutiliser les UserControls dans d'autres projets en référençant un projet de déploiement Web .

2
Guillaume CR

Comme je n'ai pas encore assez de réputation pour commenter, je vais ajouter ceci comme réponse, mais cela fait référence à la réponse de Will ci-dessus.

Du lien vous avez inclus:

Les contrôles composites sont l'outil idéal pour concevoir des composants complexes dans lesquels plusieurs contrôles enfants sont agrégés et interagissent entre eux et avec le monde extérieur. Les contrôles rendus sont parfaits pour l'agrégation en lecture seule des contrôles dans lesquels la sortie n'inclut pas d'éléments interactifs tels que des listes déroulantes ou des zones de texte.

Je pense que la documentation fait référence aux UserControls qui ont été créés en remplaçant la méthode Render en tant que contrôles rendus. Ainsi, ce n'est pas un type distinct comme la question l'indique, mais un moyen d'implémenter un UserControl; un motif.

0
Don