Je travaille actuellement sur un ensemble d'applications Web MVC3 qui ont beaucoup en commun mais qui sont déployées en tant que paquetages distincts. Une exception est une application d'administration qui est déployée pour chacune des installations. Ils partagent également une base de données et un ensemble d'entités communes.Contrôleur MVC3 et affichage de la réutilisabilité
Les ajouts récents incluaient l'authentification (authentification des formulaires personnalisés), la construction de menus automatisée (utilisant les attributs d'action du contrôleur) et quelques autres écrans. Le problème que j'ai avec ceux-ci est que j'ai dû créer des contrôleurs et des vues dupliqués.
Le meilleur exemple étant le bit d'authentification. Chaque application a maintenant un contrôleur de compte et une vue Authentification qui sont des copies l'une de l'autre. Vous pouvez voir comment cela peut vite devenir un cauchemar de maintenance car il y a plus d'applications ajoutées. Un autre exemple est une vue partagée dans chaque application qui rend un menu (généralement appelé via Html.Action). Cela nécessite également un contrôleur qui a exactement la même apparence dans chacune des applications. J'ai réussi à extraire les détails d'implémentation de l'authentification et de la construction de menus dans un projet partagé appelé XXX.Core.Mvc qui a aussi des extensions htmlHelper communes et tout ce qui est spécifique au web Mvc. Alors maintenant, toutes les vues et contrôleurs dupliqués dans les applications agissent comme des proxies.
Je cherche un bon modèle sur la façon de se débarrasser de ceux-ci afin que les vues et les contrôleurs communs résident dans un projet partagé où ils peuvent être référencés/invoqués. Est-ce que quelqu'un a fait quelque chose comme ça? Pouvez-vous recommander de bons articles ou exemples? Par exemple, comment pointez-vous une action du contrôleur qui renvoie un View ActionResult à une vue dans un projet ou un chemin partagé différent? Comment router par exemple/Compte/Authentifier à un contrôleur dans un projet différent? Quelles sont les implications de déploiement d'une approche?
[Cette publication] (http://blogs.msdn.com/b/webdevtools/archive/2011/01/20/how-to-get-razor-intellisense-for-model-in-a-class- library-project.aspx) semble utile. Essayer de mettre en œuvre maintenant pour avoir des erreurs personnalisées réutilisables. –