2011-01-14 119 views
35

ASP.NET MVC提供选择在其上新创建的视图将基于一个“脚手架模板”(添加视图>创建一个强类型的视图>脚手架模板)的能力。如何在ASP.NET MVC 3创建自己的模板脚手架?

是否有可能建立自己的脚手架模板?如果是这样,怎么样?

+2

当然,自从它刚刚发布以来,可以回答这个问题的人数大致限于Scott Guthrie和Phil Haack。 – Will 2011-01-14 15:12:54

+1

或@Darin Dimitrov;) – jfar 2011-01-14 15:45:15

+0

C:\ Program Files文件(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates \ AddController – davethecoder 2011-01-14 17:14:13

回答

33

ASP.NET MVC使用T4模板。 Here's an overview

步骤如下:

  1. 在Package Manager控制台类型:install-package mvc3codetemplatescsharp
  2. 接受所有的警告
  3. CodeTemplates文件夹将被添加到包含项目模板

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

或者,如果你想修改那些在全球范围你可以到这个在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\文件夹中。在应用网站(该项目包含的意见)的根将一个文件夹:

11

您可以使用T4没有的NuGet当然。所以它应该是目录结构是很重要的

\ CodeTemplates \ AddView \ AspxCsharp \ MyTemplate.tt

您可以从位于C现有的模板之一的内容复制:\程序文件(x86)\微软Visual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates \

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

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

从下拉菜单中点击“创建一个强类型的视图”,然后进入下使用类型“查看数据类:”

最后,在“视图内容”下拉列表中,选择“MyTempate”。如果您已正确输入文件夹,则应显示此信息。

2

或者,Visual Web Developer速成位系统,这些文件的另一个位置是C:\ Program Files文件\微软的Visual Studio 10.0 \ Common7 \ IDE \ VWDExpress \的ItemTemplate \ CSHARP \网络\ MVC 3 \ CodeTemplates

4

在Visual Studio 2012年MVC 4,简单的方法(安装Nuget软件包)给你一个不完整的设置,因为Nuget软件包过时了(2011年最新更新 - 也许是它创建的那一天)。

你必须使用弗朗西斯沙纳汉的回答的相当的,而是从复制的东西的路径是(64位):

C:\ Program Files文件(x86)的\微软的Visual Studio \ 11.0 \ Common7 \ IDE \的ItemTemplate \ CSHARP \网络\ MVC 4 \ CodeTemplates

您:

  1. 添加引用Microsoft.Web.Infrastructure,您可以在组件>扩展找到。

  2. 拷贝CodeTemplates文件夹(包括文件夹本身)到你的项目的根目录,在项目

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

  4. 包括它

    去通过每个添加的文件的属性和删除在每个“自定义工具”属性中的文本。当你做下展开箭头以每个文件都将消失(因为该文件将不再就地生成)

  5. 全部保存,并建立 - 编译器错误了

如果编译器错误唐“T走开 - 特别是如果你在一个生成的.cs看到一个错误文件的Visual Studio无法找到和.TT文件 - 关闭Visual Studio中,擦拭你的临时文件夹,并重新打开解决方案。有一次,我甚至在问题解决之前重新启动。它是由Visual Studio仍然试图自动生成代码的.tt模板生成的.cs文件引起的。

此外,.TT文件的名称是有点混乱 - 这里是他们是如何映射:

GUI:

空MVC控制器
MVC控制器的读/写操作和视图,使用实体框架
MVC控制器与空读取/写入的动作
空API控制器
与读 API控制器/写操作,使用实体框架
API控制器空读取/写入行动

CodeTemplates \ AddController的文件分别映射:

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

有一个if语句在Controller.tt和ApiController.tt中处理有/无读/写操作功能。

对于视图,命名是除了List.tt创建Index.cshtml,并Empty.tt用于任何View除了创建/删除/详细信息/编辑/索引直观。

This question covers what properties you can use in the .tt templates

.tt模板是Microsoft T4模板。 T4 Template Syntax

相关问题