【问题标题】:How do I create my own Scaffold Template in ASP.NET MVC 3?如何在 ASP.NET MVC 3 中创建自己的脚手架模板?
【发布时间】:2013-07-02 22:20:26
【问题描述】:

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

是否可以创建自己的脚手架模板?如果有,怎么做?

【问题讨论】:

  • 当然,因为它刚刚发布,能回答这个问题的人数大约仅限于 Scott Guthrie 和 Phil Haack。
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\AddController

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

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

步骤如下:

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

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

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

【讨论】:

【解决方案2】:

您当然可以不使用 nuget 使用 T4:在应用程序网站的根目录(包含视图的项目)中放置一个文件夹。目录结构很重要,所以应该是

\CodeTemplates\AddView\AspxCsharp\MyTemplate.tt

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

接下来,清除名为“自定义工具”的 TT 文件的属性。这应该是空白的。

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

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

最后,在“查看内容”下拉菜单中,选择“我的模板”。如果您正确输入了文件夹,这应该会显示出来。

【讨论】:

    【解决方案3】:

    在带有 MVC 4 的 Visual Studio 2012 中,简单的方法(安装 Nuget 包)会导致您的设置不完整,因为 Nuget 包已经过时了(最后一次更新是在 2011 年 - 可能是它创建的那一天)。

    您必须使用相当于 Francis Shanahan 的答案,但复制内容的路径是(64 位):

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

    你:

    1. 添加对 Microsoft.Web.Infrastructure 的引用,您可以在“程序集”>“扩展”中找到它。

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

    3. 暂时忽略编译器错误(比如找不到 MvcTextTemplateHost)

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

    5. 全部保存并构建 - 编译器错误消失

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

    此外,.tt 文件的名称有点令人困惑 - 以下是它们的映射方式:

    图形界面:

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

    CodeTemplates\AddController 的文件分别映射:

    控制器.tt
    ControllerWithContext.tt
    控制器.tt
    ApiController.tt
    ApiControllerWithContext.tt
    ApiController.tt

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

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        这反过来又链接到以下用于修改模板的文章: http://msdn.microsoft.com/en-us/library/cc488537.aspx

        【讨论】:

        • 这是用于动态数据,而不是用于 MVC!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-18
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 2014-05-16
        • 1970-01-01
        • 2011-07-26
        相关资源
        最近更新 更多