そこで、熱心に System.ComponentModel.DataAnnotations 名前空間をモデルに追加しました。
次のようなものを追加しました。
[Required] [DisplayName("First Name")]
public string first_name {get;set;}
カスタム T4 を記述したり、ビューを大幅に変更したりする必要がなくなるため、これらの属性が非常に気に入っています。このようにして、必要な表示名などを追加することを確信してビューを再生成できます。
この問題は、ASP.NET MVC2 で解き放たれたものに触発された DataGrid ヘルパーの構築を開始したときに発生しました。
このヘルパーでは、Stephen はリフレクションを使用して列見出しを取得します。
var value=typeOf(T).GetProperty(columnName).GetValue(item,null) ?? String.Empty;
問題は、プロパティ名を取得したくないことです。DisplayName 属性の値を取得したいと考えています。
これに対する最初の試みは、PropertyInfo クラスの Attributes プロパティの内部を調べることでした。残念ながら、データ注釈は属性として表示されません。
リフレクションを使用してデータ注釈を取得する方法はありますか?
ありがとう、
ロン