2012-02-16 40 views
4

は、記述(ASP.NET MVC 3)である。AddImplicitRequiredAttributeForValueTypesが実際にどのように機能し、どのように機能していますか?ここ

  1. 私が(デバッガで確認)デフォルト値trueこのパラメータDataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypesを持って

  2. 私は私の中で値型のフィールドを持っていますモデル(intDateTimedecimal):

    public class MyModel 
    {  
        public int SomeField { get; set; } 
    } 
    
  3. 私は空のを投稿(なしSomeFieldは、指定された)このアクションに形式:

    public ActionResult Submit(MyModel request) 
        { 
         if (ModelState.IsValid) 
         { 
          .. 
         } 
        else 
         { 
          .. 
         } 
        } 
    
  4. 私は検証エラーを持っていません!それは論理的です - intのデフォルト値は0です。それは価値です。

質問:私は常にexpicitly要求に設定され、この値を強制したい場合、私はそれがNULL可能にし、それに[Required]を置くべき

、これは動作します。でも、DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypesは何ですか?

答えて

2

我々はASP.NET MVCのソースを参照する場合、DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypesのみHTMLヘルパー(データ-val- *属性をレンダリング)とDefaultModelBinderの検証メタデータを提供DataAnnotationsModelValidatorProvider.Getvalidators方法でチェックされます。

クライアント側の検証の動作を変更し、コントローラのアクションへの値の種類の空の値を(すなわち、フィールドが掲載さが、何の値が設定されていません)を通過できるようにする必要があるときに、DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypesを設定することができます。

関連する問題