从 t4 脚手架模板访问我的模型中的元数据(数据注释)

Posted

技术标签:

【中文标题】从 t4 脚手架模板访问我的模型中的元数据(数据注释)【英文标题】:Access metadata (dataannotations) in my model from t4 scaffolding templates 【发布时间】:2012-04-13 07:24:09 【问题描述】:

如何从 T4 脚手架模板访问我的 asp.net mvc 模型类中的元数据(dataannotations 属性)?

我正在尝试读取 T4 模板中的 ScaffoldColumn 属性,因此它应该知道是否必须在索引视图中呈现某些列

谢谢

【问题讨论】:

【参考方案1】:

在 T4 模板中,您可以使用反射访问模型中的属性。如果您查看现有的 ASP.NET MVC 3 T4 模板,您将看到一个示例:

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\AddView\CShtml\Details.tt

涉及的基本代码如下所示:

foreach (PropertyInfo prop in mvcHost.ViewDataType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) 
      if (Scaffold(prop)) 
          // ...
      


bool Scaffold(PropertyInfo property) 
    foreach (object attribute in property.GetCustomAttributes(true)) 
        var scaffoldColumn = attribute as ScaffoldColumnAttribute;
        if (scaffoldColumn != null && !scaffoldColumn.Scaffold) 
            return false;
        
    
    return true;

【讨论】:

我正在尝试使用 MVC Scaffolding (mvcscaffolding.codeplex.com),我使用 EnvDTE 来读取 ScaffoldColumn 属性而不是反射,这是一个示例 (gist.github.com/1272922/…)

以上是关于从 t4 脚手架模板访问我的模型中的元数据(数据注释)的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PowerShell 脚本触发 T4 模板

如何在 MVC 中自定义脚手架模板并更改 .cs.t4 文件

T4Scaffolding - 从目录中获取文件列表

使用 T4 模板的 Visual Studio MVC 脚手架非常慢

是否可以访问有关 prisma 模型的元数据?

来自服务器资源管理器的 T4 模板使用连接