2009-08-13 7 views
-1

Nous avons un site Web dont nous aimerions extrapoler les contrôles utilisateur et les intégrer dans un ensemble. C'est ainsi que nous pouvons plus facilement réutiliser ces contrôles dans d'autres projets similaires. Je pense que nous pouvons le faire assez facilement en créant un nouveau projet de bibliothèque de classe, en déplaçant les fichiers .ascx et .ascx.cs sur ce projet, en ajoutant les références d'assemblage .net appropriées et en modifiant les références de notre projet à ces commandes utilisateur pour tirer eux de la bibliothèque.Déplacement des contrôles utilisateur du projet Web vers leur propre bibliothèque/assemblage

Le problème que je prévois à ce stade est que ces contrôles dépendent fortement d'un certain schéma de base de données. Historiquement, nous avons toujours conservé nos chaînes de connexion dans le fichier web.config et utilisons LINQ to SQL pour la gestion de notre base de données. J'ai donc du mal à trouver un moyen de partager les informations de connexion à la base de données. config avec l'assemblée. La seule façon de le faire est d'ajouter une propriété ConnectionString à chacun de mes contrôles utilisateur et, sur Page_Load, de définir la propriété ConnectionString (qui créera à son tour une instance du contexte de données à l'aide de cette chaîne de connexion). Cependant, j'espérais plutôt accomplir l'une des choses suivantes:

  • D'une manière ou d'une autre, l'assemblage tire la chaîne de connexion directement depuis le web.config. Comme l'assembly n'est pas une application web, je ne peux évidemment pas simplement appeler ConfigurationManager.ConnectionStrings ["connection"]. Est-ce possible? Moins probable, mais trouver un moyen de définir la chaîne de connexion une fois au démarrage de l'application et chaque instance de mes contrôles utilisateur en quelque sorte réutiliser cela. Je pense qu'il y aurait un moyen de cacher cette valeur pour la réutilisation par l'assemblée, mais je ne peux pas penser à un moyen de le faire.

Toutes les suggestions sont grandement appréciées.

Répondre

1

Les contrôles utiliseront toutes les chaînes de connexion incluses dans la configuration de l'application appelante. Il n'y a pas besoin d'une config séparée.

Je ne peux évidemment pas simplement appeler ConfigurationManager.ConnectionStrings ["connection"]. Est-ce possible??

Oui!

+0

Pour clarifier, la question est COMMENT comment puis-je tirer les informations de la chaîne de connexion à partir du web.config du site Web à partir de l'ensemble. – Keith

+0

La chaîne est insérée lors de l'exécution, lorsque l'assembly est appelé par une application/site Web disposant d'une configuration. Il n'a pas besoin de l'un des siens. – grenade

+0

Génial, je suppose que je devrais essayer. – Keith

0

Les appels à System.Configuration.ConfigurationManager.ConnectionStrings renverront des résultats à partir du fichier web.config de l'application même si le code appelant est placé dans son propre assembly. Rappelez-vous: ce n'est pas assembly.config, c'est web.config.

Si vos contrôles utilisateur attendent une chaîne de connexion appelée "MyDatabase", chaque application Web dans laquelle ils sont utilisés aura besoin d'une chaîne de connexion MyDatabase définie dans son fichier web.config.

Questions connexes