2010-02-05 59 views
5

我遇到了一個問題,我有一個簡單的添加/編輯窗體,並使用從數據註釋生成的客戶端驗證(jQuery/MicrosoftMvcJQueryValidation.js)通過調用下面我認爲客戶端:作爲複選框使用bool值類型時必需的屬性

<% Html.EnableClientValidation(); %> 

這似乎做工精細的大部分元素,但是我有這樣的情況:我有一個使用呈現爲一個複選框布爾屬性:

<%= Html.EditorFor(model => model.Chargeable)%> 

可以是真/假(打勾/未打勾)。

由於bool是一個值類型,並且不能爲空,它被呈現爲一個必需的屬性,並且當表單提交時顯示一個錯誤(客戶端),讀到「The Chargeable field is required。」,但是,作爲生成的HTML是兩部分(複選框和隱藏值),它將通過回發驗證。

瀏覽MVC 2的源代碼後,我已經成功地把一個「快速和骯髒的」修復的時刻,這是設置:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 

任何其他人有任何意見或建議我如何解決這個問題?

國際海事組織,我不認爲MVC應該設置爲使用Html.EditorFor/Html.CheckBox(For)方法呈現的複選框的客戶端所需驗證器。

注意:我正在使用ASP.NET MVC 2 RC2和來自匹配的MVC Futures版本的MicrosoftMvcJQueryValidation.js。

回答

5

我想處理的最簡單的方法是調用規則(「刪除」,[規則])上,我想刪除從客戶端驗證的元素(主要是複選框)功能:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#Chargeable').rules('remove', 'required'); 
    }); 
</script> 
相關問題