2011-11-29 9 views
1

私はApp_Start \ NinjectMVC3.csクラスにNinjectバインディングを作成するように、リポジトリ用のMVC Scaffolding T4テンプレートをカスタマイズしようとしています。NinjectとMVC足場

作成されたリポジトリをカスタマイズするためにテンプレートを変更することはできますが、テンプレートを使用して別のファイルにコンテンツを追加する方法については少し問題があります。

誰でも同様のことをしましたか?また、私はリポジトリとそのインターフェイスを別々のファイルに分割すると便利だと思います。

おかげ

答えて

1

あなたは、元のT4テンプレートとは別のクラスファイルを作成する必要がある場合、私はあなたがこの目的のために新しいテンプレートを作成する場合、それはより良いことだと思います。あなたはtempalteでファイルを保存したい場合は、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(); 
    } 
#> 

あなたは正しい内容で出力ファイルを埋めるためにあなたのGetMyContent()を開発する必要があります。この例では、GetMyContentは毎回環境を整えるので、他のすべてのファイルが作成されたらSaveOutputメソッドを使用してください。

+0

リポジトリファイルの分割に役立つはずです。また、既存のクラスファイルに、MVC Scaffoldingテンプレートを使用してリポジトリをスキャフォールディングするためのコードを追加したいとします。そこに任意のアイデア? – GraemeMiller

+0

@GraemeMillerあなたのプロジェクトのpackages \ MvcScaffolding.1.0.4.0ディレクトリの下に、ControllerWithRepository.cs.t4ファイルを修正して(前にバックアップコピーを作る)、修正することができます。 SaveOutput関数と新しいコンテンツを追加できます。 –

関連する問題