1

T4スキャフォールディングテンプレートからasp.netmvcモデルクラスのメタデータ(dataannotations属性)にアクセスするにはどうすればよいですか?

T4テンプレートのScaffoldColumn属性を読み取ろうとしているので、インデックスビューでいくつかの列をレンダリングする必要があるかどうかを知る必要があります

ありがとう

4

1 に答える 1

1

T4テンプレート内から、リフレクションを使用してモデルの属性にアクセスできます。既存のASP.NETMVC3 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;
}
于 2012-03-31T14:18:53.363 に答える