2011-11-29 65 views
1

我正在尝试为存储库自定义MVC脚手架T4模板,以便它在我的App_Start \ NinjectMVC3.cs类中创建Ninject绑定。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您可以尝试修改ControllerWithRepository.cs.t4文件(之前创建备份副本),将其放在项目的packages \ MvcScaffolding.1.0.4.0目录下。您可以添加SaveOutput功能和新内容。 –