2010-08-10 5 views
2

Considérons un projet avec 2 zones.Comment utiliser EditorTemplates à partir d'un AREA en dehors du courant dans ASP.NET MVC

/zones/Blog /Secteurs/Tableau de bord

dire Maintenant que ma région de blog a un éditeur pour le type SpecialBlog. /Areas/Blog/Views/Blog/EditorTemplates/SpecialBlog.ascx

Et si une vue qui fait partie de ma zone de tableau de bord souhaite afficher un blog spécial?

Le code suivant fonctionne à partir de vues dans la zone "Blog", mais pas à partir de la zone "Tableau de bord".

Html.EditorFor (model => model) // model is type SpecialBlog 

Même fournissant le chemin échoue,

Html.EditorFor (model => model, "~/Areas/Blog/Views/Blog/EditorTemplates/SpecialBlog.ascx") 

La seule chose que je peux faire est de travailler

Html.RenderPartial (Model, "~/Areas/Blog/Views/Blog/EditorTemplates/SpecialBlog.ascx"); 

Mais tout routage dans le SpecialBlog échoue. (c'est-à-dire qu'il a ses propres appels Html.EditorFor vers d'autres modèles d'éditeur dans la zone du blog). Est-ce que je fais quelque chose de fondamentalement faux?

+0

N'importe quel progrès avec ceci? – Marcus

Répondre

0

Je crois que mettre cela dans le dossier partagé fonctionnera. Si vous ne voulez pas mettre dans le dossier principal/partagé, vous pouvez essayer de configurer un autre chemin dans votre ViewEngine (ajouter à Application_start, ou dériver de celui que vous utilisez) vers quelque chose comme/areas/dossier partagé (cela signifie, créer le dossier) pour toutes les zones et mettre les modèles là.

0

J'ai eu le même problème, je voulais utiliser le ci-dessous

~/zones/ActivityPicker/Vues/ActivityPicker/EditorTemplates/ActivityPicker.cshtml

Ce qui est loin de l'Évangile, mais je ne pense pas vous pouvez le faire (en MVC 5). Quand j'ai essayé et débogué à travers cela, il a fini par le bas.

"EditorTemplates/~/zones/ActivityPicker/Vues/ActivityPicker/EditorTemplates/ActivityPicker.cshtml"

à-dire qu'elle a ajouté EditorTemplates au début. Il a ensuite regardé à travers les endroits habituels pour trouver ceci, à savoir la vue et les vues de la zone immédiate + les modèles de l'éditeur, car il ne commence pas par '~' il ne vérifie pas tous les emplacements, seul le commun et la zone actuelle (check-in VirtualPathProviderViewEnginer :: IsSpecificPath)

remplacer également '~' avec '../' aide ne marche pas, à dire que vous ne pouvez pas faire quelque chose comme ci-dessous:

« EditorTemplates/.. /../../Areas/ActivityPicker/Views/ActivityPicker/EditorTemplates/ActivityPicker.cshtml »

pour la même raison

Même si cela a fonctionné, je ne voudrais pas le faire comme vous allez sur un effet répondez latéral qui pourrait briser dans une version ultérieure

Ainsi, en résumé je ne pense pas que vous pouvez actuellement, serait heureux d'être dit autrement car il semble être une limitation pour moi.Je veux plusieurs instances de la même Voir sur une page, les modèles d'édition sont l'itinéraire conseillé pour cela, mais vous ne peut pas les utiliser entre différentes zones

Questions connexes