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

时间:2012-03-29 15:48:59

标签: asp.net-mvc t4 scaffolding asp.net-mvc-scaffolding t4scaffolding

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

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

由于

1 个答案:

答案 0 :(得分: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;
}