Vue d'ensemble des Concepteurs de contrôles ASP.NET

Mise à jour : novembre 2007

ASP.NET fournit une prise en charge améliorée pour la création de concepteurs pour les contrôles serveur Web. Les concepteurs vous permettent de générer une interface utilisateur pour un contrôle au moment du design, afin que les développeurs puissent configurer les propriétés et le contenu de votre contrôle dans un outil de conception visuelle tel que Visual Studio. Pour obtenir des informations générales sur l'architecture au moment du design et les fonctionnalités offertes par .NET Framework, consultez Extension de la prise en charge au moment du design.

Cette introduction explique les fonctionnalités de Concepteurs de contrôles ASP.NET, de classes de concepteur de base et leurs fonctionnalités ainsi que les scénarios pour travailler avec les concepteurs.

Fonctionnalités de concepteur

Tout en continuant à prendre en charge l'architecture de concepteur de contrôles de la version antérieure, ASP.NET possède des améliorations significatives.

  • Modification basée sur les zones. Les régions sont des zones modifiables dans la vue design d'un contrôle. Cette fonctionnalité permet la modification WYSIWYG du contenu d'un contrôle au moment du design.

  • Listes d'action Les listes d'action sont des menus de tâches que le développeur de pages d'un contrôle peut utiliser dans l'interface utilisateur au moment du design. Par exemple, la vue design de votre contrôle pourrait fournir un menu de tâches disponibles, y compris une tâche pour formater le contrôle automatiquement.

  • Concepteurs de sources de données et liés aux données. Les Concepteurs de contrôles de source de données permettent au développeur de pages de configurer des contrôles de source de données. Les Concepteurs de contrôles liés aux données permettent au développeur de pages de configurer des contrôles liés aux données. Les fonctionnalités sont disponibles pour implémenter une communication croisée entre les Concepteurs de source de données et liés aux données. Pour obtenir un exemple de Concepteur de contrôles de source de données, consultez DataSourceDesigner. Pour obtenir un exemple de Concepteur de contrôles lié aux données, consultez HierarchicalDataBoundControlDesigner.

  • Modification de modèle simplifiée. Le modèle pour la création d'une interface utilisateur pour la modification au moment du design de contrôles basés sur des modèles (tel que GridView) a été radicalement simplifié et modifié afin que le développeur de contrôle puisse choisir d'effectuer sa propre modification de modèle avec des régions. Pour obtenir un exemple, consultez Contrôle serveur basé sur des modèles, exemple.

  • Modèle objet simplifié. Le modèle objet pour travailler avec le rendu au moment du design est simplifié afin que le seul problème significatif qui se pose au développeur soit la production de code HTML de design. Plusieurs nouvelles classes de base fournissent l'accès au modèle objet simplifié : ControlDesigner, ContainerControlDesigner et CompositeControlDesigner.

  • Abonnement aux services hôtes. Un Concepteur de contrôles peut s'abonner à et utiliser différents services fournis par l'environnement hôte. Par exemple, un Concepteur de contrôles peut utiliser des services Visual Studio 2005 pour fournir l'accès aux données, fournir l'accès à la configuration, ajouter par programme des contrôles à une page au moment du design, gérer des événements Click dans le concepteur, peindre sur l'aire de conception et accéder à d'autres services tels que l'état du concepteur.

Classes de concepteur

Un Concepteur de contrôles active le rendu au moment du design pour un contrôle serveur Web en agissant comme un médiateur entre le contrôle au moment de l'exécution et l'environnement hôte. Dans l'environnement hôte, les concepteurs fournissent les fonctionnalités suivantes pour vous aider à créer une interface utilisateur au moment du design pour les utilisateurs de vos contrôles :

  • Rendu au moment du design et contenu. Un Concepteur de contrôles active plusieurs types de rendu, à la fois simples et complexes. La modification basée sur la région et la modification de modèle sont des exemples des types d'interface utilisateur au moment du design que vous pouvez fournir pour un contrôle. Vous pouvez également fournir la modification de colonne ou plusieurs vues exécution d'un contrôle, afin qu'un développeur travaillant avec le contrôle au moment du design puisse choisir parmi un jeu d'options le rendu du contrôle au moment de l'exécution.

  • Autres classes au moment du design. Outre les classes de concepteur, d'autres classes de convertisseur de type s'associent à un type ou une propriété et effectuent des conversions de types (tel que chaîne en valeur). Des classes d'éditeur de types d'interface utilisateur fournissent également une interface utilisateur spécialisée pour modifier une propriété. Par exemple, la liste déroulante de sélecteur de couleurs dans une grille des propriétés vous permet de sélectionner une couleur pour une propriété de couleur sur un contrôle Web. Vous pouvez également créer un éditeur composant spécialisé qui est une classe qui permet la modification des propriétés d'un contrôle dans leur ensemble.

  • Persistance des données du contrôle associé. Les propriétés internes et le contenu d'un contrôle peuvent être rendus persistants afin que le contrôle et ses contrôles enfants conservent l'état dans l'environnement au moment du design. Cela est contrôlé par la manière dont le contrôle configuré est défini dans le balisage

Lorsque vous créez des Concepteurs de contrôles pour vos contrôles serveur Web, il est probable que vous utilisiez plusieurs classes de base :

  • ControlDesigner

    Classe de base qui fournit la prise en charge au moment du design pour les contrôles serveur Web.

  • ContainerControlDesigner

    Classe de base pour un contrôle de relation contenant-contenu simple qui permet l'édition de la collection de contrôles enfants d'un contrôle. Ce concepteur fournit une zone modifiable et l'hôte (tel que Visual Studio 2005) fournit automatiquement tout le rendu.

  • CompositeControlDesigner

    Classe de base qui fournit la prise en charge au moment du design pour le rendu de contrôles serveur Web composites. Elle fournit également le contrôle par programmation du rendu de contrôles enfants.

  • DataSourceDesigner, BaseDataBoundControlDesigner et HierarchicalDataSourceDesigner

    Ces classes de base fournissent la prise en charge au moment du design pour les sources de données et les contrôles liés aux données. Elles sont conçues pour communiquer entre elles.

Scénarios pour travailler avec les concepteurs

Deux scénarios courants vous permettent de travailler avec les Concepteurs de contrôles : développement de contrôles personnalisés et développement d'outils de création visuels.

Si vous développez des contrôles serveur Web personnalisés, vous pouvez créer un concepteur associé pour améliorer la capacité d'un développeur de pages à configurer le contrôle au moment du design. Ce scénario est particulièrement utile si votre contrôle peut être réutilisé par plusieurs développeurs de pages. Par exemple, vous pouvez créer un contrôle de graphique personnalisé. Si vous fournissez un Concepteur de contrôles associé, les différents développeurs de pages d'intranet pourraient chacun configurer un contrôle sur une page avec un style différent.

Si vous développez un outil de création Web visuel, semblable à Visual Studio 2005 ou à Microsoft FrontPage, vous pouvez utiliser le Concepteur de contrôles hébergeant des composants. Cela permet à votre outil de fournir des services et d'interagir avec des Concepteurs de contrôles afin de fournir le rendu au moment du design pour les contrôles personnalisés.

Pour plus d'informations sur l'architecture du concepteur du .NET Framework, consultez Architecture de design. Pour plus d'informations sur la création de votre propre concepteur pour un contrôle serveur Web personnalisé, consultez Procédure pas à pas : création d'un Concepteur de contrôles de base pour un contrôle serveur Web. Pour plus d'informations sur la création d'un concepteur de contrôles personnalisé avec des services et des listes d'actions pour fournir une interface utilisateur au moment du design, consultez Exemple de Concepteur de contrôles avec listes d'actions et services.

Sécurisation d'un concepteur de contrôles personnalisés

Lorsqu'un contrôle est en mode Design, le composant de concepteur traite les modifications des propriétés et génère le rendu du balisage pour l'hôte de design (Visual Studio par exemple). Au moment du design, le composant de concepteur d'un contrôle s'exécute avec le même niveau de confiance que son hôte de design. Les composants de concepteur sont en mesure d'accéder aux bases de données, de passer des appels aux sites Web hébergés sur un serveur distant, de créer et d'écrire des fichiers dans l'ordinateur du développeur, d'envoyer du courrier électronique et d'exécuter du code dans d'autres assemblys.

Les informations de cette section décrivent les meilleures pratiques qui vous permettront de renforcer la sécurité des fonctionnalités du Concepteur de contrôles.

En plus de respecter les meilleures pratiques de codage et de configuration pour aider à améliorer la sécurité d'une application, assurez-vous que vous gardez continuellement le serveur d'application à jour avec les mises à jour de sécurité les plus récentes pour Microsoft Windows et les services IIS. Vous devez également vous assurer que vous possédez les versions les plus récentes de tous les packages de contrôles personnalisés commerciaux que vous avez installés sur votre ordinateur.

Vous pourrez trouver des informations détaillées à propos des recommandations pour l'écriture de code sécurisé et la sécurisation des applications dans « Écrire du code sécurisé » par Michael Howard et David LeBlanc. Pour toute aide supplémentaire, consultez le site Web Microsoft Patterns and Practices ainsi que Indications et méthodes conseillées

Problèmes connus à signaler aux utilisateurs de contrôles personnalisés

Vous devez savoir que les contrôles personnalisés provenant de sources inconnues peuvent contenir des concepteurs qui exposent des données sensibles de votre ordinateur sur le Web ou qui exécutent du code malveillant au moment du design. Vous ne pouvez pas utiliser la configuration de l'accès du code pour limiter l'accès des concepteurs de contrôles car ils doivent toujours s'exécuter dans l'hôte de design avec un niveau de confiance totale. Pour plus d'informations sur les niveaux de confiance, consultez Fichiers de stratégie et niveaux de confiance ASP.NET. Pour plus d'informations sur la sécurité d'accès du code, consultez Introduction à la sécurité d'accès du code.

Problèmes connus à signaler aux développeurs de contrôles personnalisés

L'utilisation d'attributs de configuration sur des classes et des membres pour limiter les autorisations au niveau minimal requis pour les fonctionnalités du contrôle n'est pas vraiment une mesure de sécurité suffisante pour les composants de concepteur dans la mesure où ils doivent s'exécuter dans l'hôte de design avec un niveau de confiance totale.

Si possible, n'utilisez pas de données actives d'une base de données pour afficher des structures d'exemple pour l'aperçu des contrôles de données, tels que le contrôle GridView. Cela peut exposer des données potentiellement sensibles de la base de données. Au lieu de cela, utilisez des structures de données d'exemple pour générer des données pour les aperçus.

Problèmes de sécurité connus à signaler aux développeurs d'hôtes de design

Si vous développez un hôte de design (tel que Visual Studio), vous devez vérifier si le balisage HTML, le texte et d'autres données retournées par le concepteur ne présentent pas de risques pour la sécurité avant de les afficher. De plus, il faut limiter la taille des chaînes de balisage HTML et des zones du concepteur pour qu'elles conservent des dimensions acceptables. Pour plus d'informations sur la validation HTML, consultez Validation des entrées d'utilisateur dans des pages Web ASP.NET.

Prise en charge de plusieurs outils de développement

Microsoft Visual Web Developer prend en charge toutes les fonctionnalités traitées dans cette rubrique, mais il est possible qu'il ne prenne pas en charge d'autres outils de développement. Quelques exemples de fonctionnalités qui ne seront peut-être pas prises en charge :

Voir aussi

Concepts

Architecture de design

Exemple de Concepteur de contrôles avec listes d'actions et services

Autres ressources

Prise en charge des Web Forms au moment du design

Extension de la prise en charge au moment du design