2010-02-05 14 views
5

Występuje problem z prostym formularzem dodawania/edytowania i korzystaniem z walidacji po stronie klienta (jQuery/MicrosoftMvcJQueryValidation.js), która jest generowana z adnotacji danych i włączona po stronie klienta poprzez wywołanie następuje moim zdaniem:Wymagany atrybut dla typu wartości bool używany jako pole wyboru

<% Html.EnableClientValidation(); %> 

To wydaje się działać dobrze dla większości elementów, jednak mam instancję gdzie mam właściwość logiczną, która jest uznana jako pole wyboru przy użyciu:

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

Może to być prawda/fałsz (zaznaczone/niezaznaczone).

Ponieważ bool jest typem wartości, a nie zerowością, jest renderowany jako wymagana właściwość i wyświetla błąd (po stronie klienta), gdy formularz jest nadawany podczas odczytu "Wymagane jest pole Wymagane.", Jednak Wygenerowany HTML jest dwuczęściowy (zarówno pole wyboru, jak i wartość ukryta), a następnie przejdzie weryfikację.

Po przeglądając kod źródłowy MVC 2, udało mi się umieścić „quick and dirty” naprawić się na moment, jakim jest zestaw:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 

Każdy inny ma jakieś pomysły lub propozycje jak mogę to obejść?

IMO, nie sądzę, że MVC powinno ustawiać sprawdzanie poprawności po stronie klienta dla pól renderowanych przy użyciu metod Html.EditorFor/Html.CheckBox (For).

Uwaga: Używam ASP.NET MVC 2 RC2 i MicrosoftMvcJQueryValidation.js z odpowiedniego wydania MVC Futures.

Odpowiedz

5

Przypuszczam najprostszym sposobem obsługi to nazwać zasad („usunąć” [zasady]) funkcja na elementach (głównie wyboru), które chcę usunąć walidacji po stronie klienta z:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#Chargeable').rules('remove', 'required'); 
    }); 
</script> 
Powiązane problemy