Question

Je l'ai remarqué quand je suit à mon avis:

<% Html.RenderPartial(MVC.Shared.Views.EditorTemplates.ClientOnDocuments); %>

La ligne ci-dessus retourne juste le nom de la vue, dans ce cas ClientOnDocuments. Le moteur d'affichage par défaut, puis entre en jeu et tente de trouver ClientOnDocuments.ascx dans le dossier de l'affichage en cours et dans le dossier partagé, mais pas dans le dossier DisplayTemplates et EditorTemplates.

Depuis que je suis allé assez loin avec mon utilisation de T4MVC Je ne veux pas vider ou mélanger différents styles de vues faisant référence (par exemple, les travaux ci-dessus si nous fournissons le chemin du modèle).

Les mensonges raison de ce code qui génère T4MVC:

    public class ViewNames {
    ...
        public readonly string FirmHeader = "~/Views/Shared/FirmHeader.ascx";
        public readonly string PostsSelector = "~/Views/Shared/PostsSelector.ascx";
        static readonly _DisplayTemplates s_DisplayTemplates = new _DisplayTemplates();
        public _DisplayTemplates DisplayTemplates { get { return s_DisplayTemplates; } }
        public partial class _DisplayTemplates{
            public readonly string ClientOnDocuments = "ClientOnDocuments";
            public readonly string DateTime = "DateTime";
        }
        static readonly _EditorTemplates s_EditorTemplates = new _EditorTemplates();
        public _EditorTemplates EditorTemplates { get { return s_EditorTemplates; } }
        public partial class _EditorTemplates{
            public readonly string ClientOnDocuments = "ClientOnDocuments";
            public readonly string DateTime = "DateTime";
            public readonly string PostCode = "PostCode";
        }

Vous pouvez voir que le point de vue partagé contenu dans tout racine est bien, mais apparemment, il ne gère pas les sous-dossiers bien.

Je sais que je pouvais changer le fichier modèle T4MVC mais serait en fait comme une réponse de David Ebbo s'il va changer / corriger.

Il faut espérer qu'il suit, du moins je l'ai vu ici en Décembre.

Était-ce utile?

La solution

Il est intéressant, ce comportement différent a été mis en délibéré après l'autre RAN utilisateur en questions. Recherchez ce dans le T4MVC.settings.t4:

// Views in DisplayTemplates and EditorTemplates folders shouldn't be fully qualifed as it breaks
// the templated helper code
readonly string[]  NonQualifiedViewFolders = new string[] {
  "DisplayTemplates",
  "EditorTemplates"
};

Donc, normalement, sous-dossiers se chemins complets, mais seulement ces deux ne le font pas.

Je pense que la différence est que l'utilisateur appelait DisplayFor / EditorFor rendre ceux, alors que vous appelez RenderPartial.

Dans tous les cas, puisque c'est dans le fichier de paramètres et non le modèle principal, vous pouvez simplement modifier la liste si vous ne voulez pas que le comportement, i.e..

readonly string[]  NonQualifiedViewFolders = new string[] { };

Hope this helps! :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top