50 votes

Quelle est la différence entre UserControl, WebControl, RenderedControl 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?

48voto

Will Points 76760

UserControl: Un contrôle personnalisé, se terminant en .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 (les ascx) et du code-behind. Ne peuvent pas être réutilisés dans d'autres projets par la référence à un DLL.

WebControl: Un contrôle hébergé sur une page web ou dans un UserControl. Il se compose d'un ou de plusieurs classes, le travail en tandem, et est hébergé sur une page aspx ou dans un UserControl. Contrôles webcontrols n'ont pas d'INTERFACE utilisateur "à la page" et doivent rendre leur contenu directement. Ils peuvent être réutilisés dans d'autres applications par le référencement de leur Dll.

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

CompositeControl: Entre UserControls et de contrôles webcontrols. Ils codent comme des UserControls, comme elles sont composées d'autres contrôles. Il n'y a aucune INTERFACE graphique pour le contrôle de la composition et de soutien pour l'INTERFACE d'édition de CompositeControls doit être codée par le contrôle du concepteur. La composition est fait dans le code-behind. CompositeControls peuvent être réutilisés dans d'autres projets comme les contrôles webcontrols.

8voto

JRoppert Points 2558

Vous avez oublié le ServerControl.

Dans ma compréhension, c'est comme ça:

  • Il y a seulement deux types de contrôles: contrôle UserControl et ServerControl
  • CompositeControls sont des sortes de "avancé" UserControls. Trouver plus d'info sur Scott Guthries Blog.
  • Tous d'entre eux sont des contrôles webcontrols (car elles sont toutes dérivées du Système.Web.L'INTERFACE utilisateur.De contrôle)
  • Ils sont tous rendus en quelque sorte, donc je voudrais les voir tous comme rendu des contrôles.

À partir de MSDN:

De Contrôle De L'Utilisateur

Dans ASP.NET: UN serveur de contrôle, qui est rédigé de manière déclarative en utilisant la même syntaxe que pour un ASP.NET page et est enregistré dans un fichier texte avec un .ascx extension. Les contrôles de l'utilisateur permettre à des fonctionnalités de page pour être partitionné et réutilisés. Lors de la première demande, analyse un cadre de page de contrôle de l'utilisateur dans une classe qui dérive à partir du Système.Web.L'INTERFACE utilisateur.UserControl et compile la classe dans une assemblée, qui il réutilise sur les les demandes. Les contrôles de l'utilisateur facile à de se développer grâce à leur page de style création et déploiement de sans avant la compilation.

Contrôle de serveur

Un composant côté serveur qui encapsule interface utilisateur et fonctionnalités connexes. Un ASP.NET serveur de contrôle de la dérive directement ou indirectement de la Système.Web.L'INTERFACE utilisateur.Classe de contrôle. L' sur-ensemble de ASP.NET les contrôles serveur comprend des contrôles serveur Web, HTML les contrôles serveur, et ASP.NET mobile les contrôles. La page syntaxe pour une ASP.NET serveur de contrôle comprend un runat="server" attribut sur le tag du contrôle. Voir aussi: HTML serveur de contrôle, de la validation des contrôles serveur, Contrôle de serveur Web.

3voto

Govardhan Points 21

Comme les Formulaires Web, les contrôles de l'utilisateur peuvent être créés dans le concepteur visuel ou elles peuvent être écrites avec le code distinct de l'HTML. Ils peuvent également soutenir des événements de l'exécution. Cependant, depuis le Web, les contrôles de l'utilisateur compilé 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'il est ajouté à une page.

Cela rend les contrôles utilisateur Web plus difficile à utiliser si vous êtes habitué à plein de Visual Studio .NET au moment de la conception de soutien, y compris la fenêtre de Propriétés et de Conception d'afficher les aperçus. Aussi la seule façon de partager le contrôle de l'utilisateur entre les applications est de mettre une copie dans chaque application, ce qui prend plus de la maintenance, si vous apportez des modifications à la commande.

Web de contrôles personnalisés sont code compilé, ce qui les rend plus facile à utiliser mais plus difficile à créer. Web des contrôles personnalisés doivent être créés dans le 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 la pleine fenêtre Propriétés de soutien et tous les autres au moment de la conception des fonctionnalités de ASP.NET les contrôles serveur. En outre, vous pouvez installer une seule copie du site Web d'un contrôle personnalisé dans le cache d'assembly global et le partage entre les applications qui facilitent la maintenance.

2voto

Guillaume CR Points 21

Contrairement à l’intervention de la volonté, il est possible de réutiliser les UserControls dans d’autres projets en faisant référence à un projet de déploiement web.

0voto

Don Points 2570

Depuis je n'ai pas assez de réputation encore de commentaire, je vais ajouter cela comme une réponse, mais il se réfère à la Volonté de la réponse ci-dessus.

À partir du lien que vous avez inclus:

Contrôles composites sont l'outil de l'architecte de composants complexes, dans lequel de multiples contrôles enfants sont agrégées et d'interagir entre eux et avec le monde extérieur. Rendu les contrôles sont juste pour lecture seule agrégation des contrôles dans lequel la sortie n'est pas inclure des éléments interactifs tels que des déroulante ou des zones de texte.

Je crois que la documentation fait référence à UserControls qui ont été créés par la substitution de la méthode Render que le Rendu des Contrôles. Ainsi, il n'est pas un type distinct que la question implique, mais un mode de mise en œuvre d'un UserControl; un motif.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X