2012-02-16 21 views
4

這裏是一個描述(ASP.NET MVC 3):AddImplicitRequiredAttributeForValueTypes如何真正起作用以及它的作用是什麼?

  1. 我有這個參數DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes默認值true(與調試器檢查)

  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在請求中設置我應該讓它爲空的,並把[Required]就可以了,這個工程。但是DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes是用於什麼?

回答

2

如果參考ASP.NET MVC源,DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes僅在DataAnnotationsModelValidatorProvider.Getvalidators方法,其提供的驗證元數據HTML助手(呈現數據-val- *屬性時)和DefaultModelBinder被檢查。

所以,當有需要改變客戶端驗證的行爲,並允許通過空值(即現場張貼,但沒有設置值)值類型到控制器動作DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes可以設置。

相關問題