如何在ASP.NET MVC 3中创build自己的脚手架模板?

ASP.NET MVC提供了select新创build视图所基于的“脚手架模板”的能力(添加视图>创build强types视图>脚手架模板)。

是否可以创build自己的脚手架模板? 如果是的话,怎么样?

ASP.NET MVC使用T4模板。 这是一个概述 。

这里是步骤:

  1. 在软件包pipe理器控制台中键入: install-package mvc3codetemplatescsharp
  2. 接受所有的警告
  3. CodeTemplates文件夹将被添加到包含模板的项目中

从这里你可以修改现有的模板或添加新的模板。

或者,如果您想要在全局范围内修改这些文件,您可以在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\文件夹中进行修改。

你可以在没有nuget的情况下使用T4:在应用程序网站(包含视图的项目)的根目录下放置一个文件夹。 目录结构很重要,所以应该是

\ CodeTemplates \ AddView \ AspxCsharp \ MyTemplate.tt

您可以复制位于C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates \

接下来,清除名为“Custom Tool”的TT文件上的属性。 这应该是空白的。

然后右键单击任何控制器动作,然后说“添加视图”,或者由于控制器在我们的情况下是在一个单独的项目中,右键单击查看文件夹,然后单击“添加视图”。

从下拉列表中点击“创build强types视图”,然后在“查看数据类:”下input要使用的types

最后,在“查看内容”下拉列表中,select“我的帐户”。 如果你已经正确地input了文件夹,这应该显示出来。

在MVC 4的Visual Studio 2012中,简单的方法(安装Nuget包)会得到一个不完整的设置,因为Nuget包过时了(2011年最后一次更新 – 也许是创build的那一天)。

你必须使用弗朗西斯·沙纳汉(Francis Shanahan)的答案,而是从(64位)复制的。

C:\ Program Files(x86)\ Microsoft Visual Studio \ 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 4 \ CodeTemplates

您:

  1. 添加对Microsoft.Web.Infrastructure的引用,您可以在Assemblies> Extensions中find它。

  2. 将此CodeTemplates文件夹(包括文件夹本身)复制到项目的根目录并将其包含在项目中

  3. 现在忽略编译器错误(如找不到MvcTextTemplateHost)

  4. 浏览每个添加文件的属性,并删除每个文件的“自定义工具”属性中的文本。 当你做每个文件旁边的展开箭头将消失(因为该文件将不再生成就地)

  5. 全部保存和编译 – 编译器错误消失了

如果编译器错误不会消失 – 尤其是如果您在生成的.cs文件中看到错误Visual Studio找不到和.tt文件 – closuresVisual Studio,擦除临时文件夹并重新打开解决scheme。 有一次,我甚至在问题解决之前重新启动。 这是由Visual Studio仍然试图自动生成代码的.tt模板生成的.cs文件引起的。

另外,.tt文件的名字有点令人困惑 – 这是他们如何映射的:

GUI:

空的MVC控制器
具有读/写操作和视图的MVC控制器,使用entity framework
具有空读/写操作的MVC控制器
空的API控制器
带有读/写操作的API控制器,使用entity framework
具有空读/写操作的API控制器

CodeTemplates \ AddController的文件分别映射到:

Controller.tt
ControllerWithContext.tt
Controller.tt
ApiController.tt
ApiControllerWithContext.tt
ApiController.tt

Controller.tt和ApiController.tt中有一个if语句,用于处理有/无读/写操作function。

对于视图,命名是直观的,除了List.tt创buildIndex.cshtml,并且Empty.tt用于除了Create / Delete / Details / Edit / Index之外的任何视图。

这个问题涵盖了你可以在.tt模板中使用的属性 。

.tt模板是Microsoft T4模板。 T4模板语法 。

或者,对于32位系统上的Visual Web Developer Express,这些文件的另一个位置是C:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ VWDExpress \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates

此MSDN文章讨论脚手架和页面模板: http : //msdn.microsoft.com/en-us/library/cc488540.aspx

然后,链接到下面的文章来修改模板: http : //msdn.microsoft.com/en-us/library/cc488537.aspx