Доступ к метаданным (dataannotations) в моей модели из шаблонов скаффолдинга t4

Как я могу получить доступ к метаданным (атрибутам dataannotations) в моем классе модели asp.net mvc из шаблона скаффолдинга T4?

Я пытаюсь прочитать атрибут ScaffoldColumn в шаблоне T4, поэтому он должен знать, если нужно визуализировать некоторые столбцы в представлении индекса

Спасибо

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;
}
Другие вопросы по тегам