Ceci est probablement simple mais m'a rendu fou. J'ai cherché partout pour cela et trouvé des gens qui l'ont mentionné mais aucune solution fournie.MVC 2 Html CheckBox côté client Validation
J'ai un simple viewmodel qui a une propriété booléenne sans annotation de données, d'autres propriétés le font mais cela n'affecte pas le problème.
Public Property AcceptSurvey As Boolean
J'ai une vue qui est fortement typée à ce modèle qui fonctionne très bien avec la validation du serveur (à savoir tous les autres validation fonctionne bien et AcceptSurvey est facultative).
<%: Html.CheckBoxFor(Function(x) x.AcceptSurvey)%>
Quand j'activer la validation du côté client, sur la présentation de la forme (AcceptSurvey n'est pas cochée) Je reçois le message « Le champ AcceptSurvey est nécessaire. ». Je suppose que c'est parce que la validation ne voit qu'une valeur (true) lorsque la case est cochée. Je me rends compte que l'aide de CheckBoxFor rend un champ caché (même attribut de nom et une valeur de faux) et a pensé que c'était pour combattre ceci. Si je rend la propriété nullable je ne peux pas utiliser CheckBoxFor, je peux utiliser EditorFor mais cela se traduit par une liste déroulante avec trois propriétés (pas ce que je veux) et la validation côté client fonctionne très bien.
Suis-je stupide? BTW J'utilise MVC JQuery pour le côté client.