Доступ к метаданным (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;
}