Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在ASP.NET MVC 3中创建自己的脚手架模板?_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 如何在ASP.NET MVC 3中创建自己的脚手架模板?

Asp.net mvc 如何在ASP.NET MVC 3中创建自己的脚手架模板?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,ASP.NET MVC提供了选择“脚手架模板”的功能,新创建的视图将基于该模板(添加视图>创建强类型视图>脚手架模板) 是否可以创建自己的脚手架模板?如果是,如何使用?ASP.NET MVC使用T4模板 以下是步骤: 在软件包管理器控制台中,键入:安装软件包MVC3CodeTemplatesSharp 接受所有警告 codemplates文件夹将添加到包含模板的项目中 从这里,您可以修改现有模板或添加新模板 或者,如果您想全局修改这些文件,您可以在C:\ProgramFiles(x86)\Mic

ASP.NET MVC提供了选择“脚手架模板”的功能,新创建的视图将基于该模板(添加视图>创建强类型视图>脚手架模板)


是否可以创建自己的脚手架模板?如果是,如何使用?

ASP.NET MVC使用T4模板

以下是步骤:

  • 在软件包管理器控制台中,键入:
    安装软件包MVC3CodeTemplatesSharp
  • 接受所有警告
  • codemplates
    文件夹将添加到包含模板的项目中
  • 从这里,您可以修改现有模板或添加新模板


    或者,如果您想全局修改这些文件,您可以在
    C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\
    文件夹中进行修改。当然,您可以使用T4而不使用nuget:在应用程序网站(包含视图的项目)的根目录中放置一个文件夹。目录结构很重要,因此应该

    \CodeTemplates\AddView\AspxCsharp\MyTemplate.tt

    您可以从位于C:\Program Files(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates中的现有模板之一复制内容\

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

    然后右键单击任何控制器操作并说“添加视图”,或者由于控制器在本例中位于单独的项目中,右键单击视图文件夹并单击“添加视图”

    从下拉列表中单击“创建强类型视图”,然后在“视图数据类:”下输入要使用的类型


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

    此MSDN文章讨论了脚手架和页面模板:

    然后,链接到以下文章以修改模板:

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

    在使用MVC 4的Visual Studio 2012中,简单的方法(安装Nuget软件包)会使您的安装不完整,因为Nuget软件包已经过时了(上一次更新是在2011年,可能是在它创建的那一天)

    您必须使用与Francis Shanahan的答案等效的方法,但从中复制内容的路径是(64位):

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

    你:

  • 添加对Microsoft.Web.Infrastructure的引用,可以在程序集>扩展中找到该引用

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

  • 暂时忽略编译器错误(例如找不到MvcTextTemplateHost)

  • 检查每个添加文件的属性,并删除每个文件的“自定义工具”属性中的文本。执行此操作时,每个文件旁边的展开箭头将消失(因为文件将不再原地生成)

  • 保存所有和生成-编译器错误消失

  • 如果编译器错误没有消失-尤其是如果在生成的.cs文件Visual Studio找不到和.tt文件中看到错误-关闭Visual Studio,擦除临时文件夹,然后重新打开解决方案。在一个案例中,我甚至在问题解决之前重新启动。这是由Visual Studio仍在尝试自动为其生成代码的.tt模板生成的.cs文件引起的

    此外,.tt文件的名称有点混乱-下面是它们的映射方式:

    图形用户界面:

    空MVC控制器
    具有读/写操作和视图的MVC控制器,使用实体框架
    具有空读/写操作的MVC控制器
    空API控制器
    具有读/写操作的API控制器,使用实体框架
    具有空读/写操作的API控制器

    CodeTemplates\AddController的文件分别映射:

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

    Controller.tt和ApiController.tt中有一个if语句,用于处理带/不带读/写操作功能

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


    .tt模板是Microsoft T4模板

    当然,由于它刚刚发布,能够回答这个问题的人数仅限于Scott Guthrie和Phil Haack。C:\Program Files(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\AddControllert这是用于动态数据的,而不是用于MVC!使用VS2012在MVC4项目上安装此设备的相关/后果: