5

假设我有以下型号:

public class Item
{
    public int Id{ get; set; }
    public ItemDescription ItemDescription{ get; set; }
}
public class ItemDescription
{
    public int Id{ get; set; }
    public int Revision{ get; set; }
    public string Test{ get; set; }
}

我在包管理器中运行以下命令:

Scaffold Controller Item

生成一些视图和东西......但看起来脚手架忽略了任何复杂/非标量数据类型,因此生成了几乎没有用的视图。

我想知道是否有可能指示脚手架对事情更聪明一点。这是我想要发生的事情:

  • 脚手架在共享文件夹中创建编辑器/显示模板
  • 用于EditorFor利用这些模板

实现这一点的所有代码似乎都是由脚手架生成的,但其结构让我感到惊讶,_CreateOrEdit.cshtml在与视图关联的文件夹中生成了“模板”。对我来说,这表明脚手架生成的代码不适合以递归方式为模型生成视图的方式。

是我的期望偏离了,还是我错过了什么?

4

1 回答 1

4

描述

您可以在以下位置找到 Visual Studio 用于生成代码的 T4 模板

YourPathToVisualStudio2010\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates

更改解决一般问题所需的模板。您可以做的另一件事是创建一个模板并将它们添加到您的特定项目/解决方案中。

查看伟大的Scott Hanselman - T4(文本模板转换工具包)代码生成 - 最佳保留 Visual Studio 秘密帖子。

我真的鼓励您阅读我的“更多信息”部分中的链接。

祝你今天过得愉快!

更新

几天以来,整个(不仅是 mvc)microsoft webstack(喜欢这个词,感谢 scott hanselman ;))在 codeplex ASP.NET Webstack上是开源的。一探究竟!

MVC4 不在 RTM 版本中,但也许你有兴趣。

Visual Studio (MVC4) 中的代码生成秘诀

新的“食谱”功能使 Visual Studio 能够基于可以使用 NuGet 安装的包生成特定于解决方案的代码。Recipes 框架使开发人员可以轻松编写代码生成插件,您还可以使用这些插件来替换 Add Area、Add Controller 和 Add View 的内置代码生成器。由于配方部署为 NuGet 包,因此可以轻松地将它们检入源代码管理并自动与项目中的所有开发人员共享。它们也可在每个解决方案的基础上使用。

随时提出其他问题。请使用我的答案的评论功能。

更多信息

于 2011-12-02T13:47:25.263 回答