J'ai défini quelques modèles d'affichage pour les classes et ils fonctionnent bien quand je les mets dans views/shared/DisplayTemplates. Cependant, après les avoir déplacés dans une zone, ASP.NET MVC ne cherchera pas dans Area pour trouver les templates. Comment référencer les DisplayTemplates définis dans une zone du projet principal? Est-ce une bonne pratique?Comment référencer les DisplayTemplates définis dans une zone du projet principal?
Répondre
Je ne pense pas que vous pouvez référencer des modèles d'affichage qui existent dans une zone du projet principal ou dans une zone différente.
Ceci est très logique et je pense que vous devriez suivre cette contrainte et ne pas essayer de contourner ce problème. Considérez une zone comme une partie logique séparée de votre application - elle devrait avoir toutes ses ressources à l'intérieur de la zone. Toutefois, lorsque vous disposez d'une ressource telle qu'une mise en page maîtresse ou une image de logo à utiliser dans d'autres zones, cette ressource doit être placée dans les dossiers principaux du projet et non dans des zones spécifiques pour la rendre accessible à tous.
Je ne suis pas totalement d'accord avec Shay - dans le cas d'une zone réutilisable partagée, les modèles peuvent être spécifiés par défaut et annulés dans le projet de site Web principal si nécessaire. La classe TemplateHelper doit prendre en compte les zones lors de la localisation des modèles.
Ceci est assez facile à corriger, tho - see my other post here
La raison pour laquelle je souhaite faire référence à un des modèles dans une zone est parce que je veux étendre l'application principale en ajoutant simplement une zone réutilisable, le type de données, le modèle d'affichage de ce type de données se trouve dans une zone. Je souhaite que le "displayfor" pour ce nouveau type de données (qui hérite d'une classe dans l'application principale) prenne automatiquement son propre modèle dans la zone. Je pense que cela devrait être un scénario utilisateur assez valide. –