在ASP.NET MVC中修改默认代码生成/支架模板

[原文发表地址]Modifying the default code generation/scaffolding templates in ASP.NET MVC

[原文发表时间]2011-03-28 14:06

除了Bill Cosby的毛衣,我的ASP.NE MVC 2 Ninja Black Belt Tips视频里最受欢迎的就是怎样修改ASP.NET MVC任意版本中Code Generation的默认CodeTemplates。

image

Eilon在这周的内部邮件列表中提到过这个问题,所以亲爱的读者们,以防你们错过,我想了想还是有必要而且值得将这个问题拿出来再探讨下。

不久我们就会看到更多给力的,灵活且有趣的方法来自定义你的ASP.NET MVC 3中的支架,请随时关注。

在你的项目中带入本地CodeTemplates

image当你用Visual Studio"tooling"(意思是dialogs和stuff)来添加View或Controller时,你其实执行的是T4模板,生成一些代码。那这是从哪里开始的,你又能用什么方法来改变它呢?

试试这个,创建一个新的ASP.NET MVC项目。

然后去往:

C:\Program Files (or x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp (or Visual Basic)\Web\MVC (or 2) 3\CodeTemplates

看见这些文件夹了吗?打开CodeTemplates目录下的所有文件夹就是T4模板了,可以进行适当的修改或更多,可以将本地转到你的项目。本地CodeTemplates会覆盖全局的CodeTemplates。

将那个文件夹拷贝(或者只复制像AddController和AddView这类的子文件夹)到你的ASP.NET项目中。我是直接从Explorer中把它们直接拖进Visual Studio Solution Explorer里的,如图所示:

image

你添加文件夹的时候可能会有错误提示,只需忽略就好。用Ctrl-Click选中Templates,然后右键选择属性。(你可以删除那些你不用的templates)。

image

看见上面显示Custom Tool在哪儿了吗?找到他完整的字符串并且将他们彻底删除。 你在提示Visual Studio你不想这些T4 Templates在建立过程中运行。他们只有在需要时通过像Add View 和Add Controller这样的 Tooling dialogs来调用。

你可以变更这些模板,或者像通过Add View时来当做自己的模板使用。比如这里我做了一个新的"My Awesome List.tt",是List.tt的复制版,它会在Add View dialog出现。

image

现在我不仅可以完全自定义Add Controller和Add View dialogs中生成的东西,我还可以在下拉条中添加用户模板。更重要的是,这些变更会在我项目的CodeTemplates文件夹中保留,在Source Control中随同携带,这样我的团队或是我的公司也可以使用它们。

你自定义成功了吗?希望你们喜欢。