2009-04-15 9 views
2

Existe-t-il un moyen de charger des vues partielles à partir d'une bibliothèque de classes?
Je voudrais retirer les parties communes de plusieurs sites Web pour les rendre plus faciles à entretenir.Charge partielle de la bibliothèque de classes

Actuellement je rends mes partials avec (par exemple)

<%Html.RenderPartial("~/Views/Search/_searchBlock.ascx", ViewData);%> 

Ceci est basé sur des fichiers, mais lors de la création d'une bibliothèque de classes, les vues sont compilées. Existe-t-il un moyen de charger les bibliothèques qui sont compilées dans cette bibliothèque?

+0

Cela semble être une chose très utile à faire, en particulier lors de la migration d'une application de WebForms à MVC. Est-ce possible dans les versions plus récentes de asp.net mvc ou mvc 2? –

+0

@ Ashley. Je l'ai vu utilisé dans un tutoriel il y a un certain temps. Mais comme je ne travaille plus sur ce projet, je ne l'ai pas utilisé en pratique. Si je parviens à le retrouver, je publierai un lien plus tard –

Répondre

0

La seule façon dont je peux penser à faire cela serait avec embedded resources et un viewengine personnalisé. réflecteur Point (ou télécharger le soruce MVC) à System.Web.Mvc.Html.RenderPartialExtensions

+0

Hmm, y a-t-il un moyen plus simple de rendre les contrôles disponibles sur plusieurs sites? –

+0

Je ne suis pas sûr, je serais intéressé s'il y a. Ce sera un peu un travail à faire à ma façon, vous devrez remplacer l'appel à BuildManager.CreateInstanceFromVirtualPath avec quelque chose qui lit le flux de textes pour vous fichier à partir des ressources d'assemblage, compilez-le dans un ViewUserControl. effort essentiellement –

+0

peut-être svn: externals pourrait vous aider? –

0

Voir Phil Haacks new post une autre idée

+0

Il, je lisais pendant que vous répondiez. Je vous remercie de vous y retourner. Bien que cela semble mauvais, je ne vois pas comment cela pourrait être très utile dans mon scénario. Je pense que je vais essayer de créer ma propre méthode qui localise les vues. De cette façon, je pourrais par exemple ajouter une appKey qui indique où ils se trouvent et tous les sites iraient chercher à partir de là plutôt que de chercher dans son propre dossier. –

+0

C'est le business virtualpathprovider, c'est ce que vous avez besoin de remplacer/mettre en œuvre pour faire ce que vous voulez –

+0

Hmm, semble que le rendu est basé sur les fichiers jusqu'au fond du moteur: S Cela craint. –

Questions connexes