11
votes

Partager la page ASPX entre les projets

Nous avons une solution avec plusieurs projets Web, et certaines pages doivent être présentes dans plusieurs d'entre elles. Nous aurions donc besoin d'une sorte de projet partagé qui contient des fichiers ASPX et qui peuvent être référencés par d'autres projets Web.

Il y a maintenant quelques implémentations:

Une implémentation décrit par Scotgu qui implique Construire le projet partagé et la copie de la sortie ASPX dans le projet hôte et référencer la DLL de l'ASPX. Cette méthode présente l'inconvénient que si l'APSX est modifié, il doit être recopié.

Une autre option, basée sur La publication de David Ebbo serait de convertir l'ASPX EN ASCX-ES, qui peut être référencée en tant que commandes personnalisées et que celles-ci. dans le projet hôte à l'intérieur de certaines pages de placement. Mais mes préoccupations sont les suivantes: toutes les pages APSX peuvent-elles transformer en ASCX? Je veux dire qu'il n'y a pas d'événement de page.loadComplet dans des contrôles utilisateur par exemple.

Et encore une autre option consiste à utiliser des répertoires virtuels qui plantent dans le programme Web partagé, comme décrit dans un Microsoft Article KB . Le problème à nouveau avec cette méthode est que l'ASPX-ES partagé doit être dans des répertoires prédéfinis (c'est-à-dire le répertoire virtuel). Si le nom du répertoire virtuel chevauche un répertoire physique, le virtuel la remplace et aucune page de ce dernier ne peut être utilisée. Est-il peut-être possible de fusionner ces deux ensemble?

Toute pensée? Merci d'avance P.s. Pourquoi ne pas déboguer les pages partagées?


0 commentaires

4 Réponses :


0
votes

Avez-vous pensé à basculer la fonctionnalité dans des classes qui héritent d'une page et placez ces classes dans la DLL partagée. Toutes les applications de mise en œuvre pourraient ensuite implémenter cette page en héritant de celle-ci et être en mesure de modifier la fonctionnalité supposant que les classes de base fournissent des méthodes ultidrives. J'ai eu un bon succès avec cela lorsque j'avais beaucoup de pages utilisées dans de nombreuses applications et que tous avaient le même code. Juste une possibilité.


2 commentaires

Bon point, mais j'ai du contenu sur l'ASPX-ES (contrôles et contenu statique). Existe-t-il un moyen facile de compiler ce contenu dans la DLL? J'ai essayé de compiler la page complète (marquage + code) dans la DLL (en précompilant-le) et d'inhérez de cette classe, mais qu'il y a une erreur d'exécution », une erreur s'est produite lors de l'essai de charger les ressources de chaîne" qui me fait Pensez que la page tente de charger le balisage de la DLL en tant que ressource.


Devrait être en mesure de compiler le contenu dans la DLL en définissant la propriété de construction de toutes les commandes à la ressource intégrée. Vous devrez peut-être charger les commandes du code en interrogeant les ressources de l'Assemblée, mais cela devrait s'entraîner.



0
votes

Avez-vous considéré le développement axé sur le service? Construisez la fonctionnalité dans les services que vous pouvez partager. Construisez vos fonctionnalités comme des widgets. De cette façon, vous n'avez qu'une seule basebase, mais vous pouvez l'utiliser dans plusieurs sites.

pense en dehors de la (.Net Box)


0 commentaires


4
votes

J'ai résolu ce problème en effectuant une bibliothèque de classe partagée contenant .ascx contrôles. N'ont pas trouvé de vraies difficultés lors de la conversion des pages .aspx à .ascx contrôles. J'ai trouvé cet échantillon par Scottgu vraiment simple et bon endroit pour commencer. http://webproject.scotgu.com/cshaarp/usercontrols/usercontrols.aspx .


2 commentaires

Et avec USERCONTROLS, il n'est pas nécessaire de les copier (voir la 2e proposition de paragraphe de la question). Merci d'avoir répondu.


Maintenant, je viens de copier ces DLL sur l'événement de Prebuild, ce qui n'est pas si gros problème. Je devrais jeter un coup d'œil à la poste de David Ebbo. Merci pour le conseil.