11 votes

Partager la page aspx entre les projets

Nous avons une solution avec plusieurs projets web, et il y a des pages qui devraient être présentes dans plusieurs d'entre eux. Nous aurions donc besoin d'un projet partagé qui contient des fichiers aspx, et qui peut être référencé par d'autres projets web.

Il existe quelques implémentations :

Une implémentation décrite par ScottGu qui implique la construction du projet partagé, puis la copie de la sortie aspx dans le projet hôte, et la référence à la dll du aspx. Cette méthode a l'inconvénient que si le aspx est modifié, il doit être recopié.

Une autre option, basée sur le post de David Ebbo, serait de convertir le aspx en ascx qui peuvent être référencés comme des contrôles personnalisés, puis inclure ces ascx personnalisés dans le projet hôte à l'intérieur de certaines pages de substitution. Mais mes inquiétudes sont : est-ce que tous les aspx peuvent être transformés en ascx ? Je veux dire, il n'y a pas d'événement Page.LoadComplete dans les contrôles utilisateurs par exemple.

Et une autre option est d'utiliser des répertoires virtuels qui pointent vers le projet web partagé, comme décrit dans un article de base de connaissances de Microsoft KB. Le problème à nouveau avec cette méthode est que les aspx partagés doivent ê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 le remplace et aucune page du second ne peut être utilisée. Est-il peut-être possible de fusionner les deux ensemble ?

Des réflexions ? Merci d'avance P.S. Et en ce qui concerne le débogage des pages partagées ?

4voto

azhons Points 128

J'ai résolu ce problème en créant une bibliothèque de classes partagée qui contient des contrôles .ascx. Je n'ai pas trouvé de difficultés réelles lors de la conversion des pages .aspx en contrôles .ascx. J'ai trouvé cet exemple de ScottGu vraiment simple et un bon point de départ. http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx.

1voto

jaraics Points 1956

La solution que nous utilisons est la méthode de ScottGu, qui consiste à copier les fichiers aspx du projet partagé vers les projets hôtes.

Un événement de post-construction dans le projet partagé copie les fichiers à leur place, comme ceci

xcopy "$(ProjectDir)Forms\Techs\AddEditTech.aspx" "$(SolutionDir)..\TTAdmin\Forms\Companies"  /i /d /y
if errorlevel 1 goto BuildEventFailed

xcopy    ....

goto BuildEventOK

:BuildEventFailed
echo L'ÉTAPED'APRÈSCONSTRUCTION pour $(ProjectName) a ÉCHOUÉ
exit 1

:BuildEventOK
echo L'ÉTAPED'APRÈSCONSTRUCTION pour $(ProjectName) EST COMPLÉTÉE AVEC SUCCÈS

0voto

Josh Points 5333

Avez-vous envisagé de mettre en place les fonctionnalités dans des classes qui héritent de Page et de placer ces classes dans le DLL partagé. Toutes les applications implémentant cette page pourraient alors hériter de celle-ci et continuer à modifier les fonctionnalités tant que les classes de base fournissent des méthodes surchargeables. J'ai eu de très bons résultats avec cette approche lorsque j'avais beaucoup de pages utilisées dans de nombreuses applications et partageant le même code. Juste une possibilité.

0voto

Chris Points 11

Avez-vous envisagé le développement orienté service? Intégrez la fonctionnalité dans des services que vous pouvez partager. Construisez votre fonctionnalité comme des widgets. De cette façon, vous n'avez qu'une seule base de code mais vous pouvez l'utiliser dans plusieurs sites.

Pensez en dehors de la boîte (.Net)

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