1

DataTypeAttributeclass が から継承されていることに気付きましたSystem.ComponentModel.DataAnnotations.ValidationAttribute

ASP.NET MVCDefaultModelBinderクラスに関してDataTypeAttributeは、検証属性ですか? 平易な英語で、ModelBinder はオブジェクトを検証しますDataTypeAttributeか?

たとえば、DataTypeプロパティをに指定DataType.EmailAddressすると、電子メール アドレスが検証されるか、この属性はオブジェクトのメタデータのみを提供します。

アップデート

SO で同様の質問を見つけました:

DataTypeAttribute 検証は MVC2 で機能していますか?

したがって、それによると、検証属性として機能していません。System.ComponentModel.DataAnnotations.ValidationAttributeでは、検証属性として機能していないのに、なぜ継承されるのでしょうか?

4

2 に答える 2

1

MVC3 ソース コードに基づくと、 の唯一の目的はDataTypeAttribute、プロパティを設定することです。このModelMetadata.DataTypeName プロパティは、EditorFor/DisplayFor テンプレート生成でのみ使用されます。したがって、検証とは何の関係もありません。だから私はなぜそれがから継承されているのか分かりませんValidationAttribute。おそらく、フレームワークの作成者は、将来の使用のためにそれを予約しました。

于 2011-11-12T20:47:12.907 に答える