2011-11-29 7 views
1

J'essaie de personnaliser le template MVC Scaffolding T4 pour le Repository afin qu'il crée des bindings Ninject dans ma classe App_Start \ NinjectMVC3.cs.Échafaudages Ninject et MVC

Je peux modifier le modèle pour personnaliser le référentiel créé, mais je ne sais pas trop comment le modèle peut ajouter du contenu à un fichier distinct.

Quelqu'un a-t-il fait quelque chose de similaire? Aussi je suppose que la division du dépôt et de son interface en fichiers séparés serait pratique.

Merci

Répondre

1

Si vous devez créer un fichier de classe différent du modèle T4 d'origine, je pense qu'il est préférable si vous créez un nouveau modèle à cette fin. Si vous souhaitez enregistrer un fichier dans un tempalte, vous pouvez créer le fichier en utilisant la bibliothèque Syste.IO:

<#@ import namespace=“System.IO” #> 

<#+ 
    void SaveOutput(string outputFileName) 
    { 
     string templateDirectory = Path.GetDirectoryName(Host.TemplateFile); 
     string outputFilePath = Path.Combine(templateDirectory, outputFileName); 
     File.WriteAllText(outputFilePath, GetMyContent()); 
    } 
#> 
<#+ 
    string GetMyContent() 
    { 
     // clean the environment 
     this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length); 
     #> 
     This is my content 
     <#+ 
     // return new content 
     return this.GenerationEnvironment.ToString(); 
    } 
#> 

Vous devez développer votre GetMyContent() pour remplir le fichier de sortie avec le contenu approprié. Dans cet exemple, GetMyContent nettoie l'environnement à chaque fois, alors n'oubliez pas d'utiliser la méthode SaveOutput une fois tous les autres fichiers créés.

+0

Cela devrait aider à scinder le fichier du référentiel. Je veux également ajouter du code dans un fichier de classe existant dans le cadre de l'échafaudage du référentiel avec le modèle MVC Scaffolding. Des idées là-bas? – GraemeMiller

+0

@GraemeMiller Vous pouvez essayer de modifier le fichier ControllerWithRepository.cs.t4 (faites une copie de sauvegarde avant) placé dans le répertoire packages \ MvcScaffolding.1.0.4.0 du projet. Vous pouvez ajouter la fonction SaveOutput et votre nouveau contenu. –