ASP.NET MVC ではモデルクラスに設定されたデータアノテーション属性は、使用時に ModelMetadata へキャッシュされる形になってます。 ModelMetadata クラス (System.Web.Mvc) データアノテーションを読み込んでいるのは DataAnnotationsModelMetadataProvider クラスです。ソースを読むといろいろな苦労が分かってきます。 どんな属性を認識して読み込んでいるかは Brad Wilson 氏の記事でわかりやすく説明されています。ASP.NET MVC 2 の時の記事ですが MVC 3 でも変わっていません。 Brad Wilson: ASP.NET MVC 2 Templates, Part 2: ModelMetadata 例を挙げると、デフォルトではフォームに空文字列が入力された場合にはモデルバインダによって nu