Enfin…pas tout à fait.
J’ai dû utiliser le HtmlHelper « Html.CheckBox » pour un formulaire.
Voici l’url de réponse du formulaire :

On retrouve deux fois le paramètre « inscription » avec deux valeurs différentes !
Voici le HTML qui était généré par notre HtmlHelper :
<input id="inscription" name="inscription" type="checkbox" value="true"/>
<input name="inscription" type="hidden" value="false"/>
On retrouve bien un champ input de type « checkbox », mais auss un champ caché. Et les deux ont le même nom.
L’intérêt ?
Prenons notre CheckBox « inscription » : si l’utilisateur ne l’a pas coché, le navigateur ne renverra pas le paramètre « inscription » et sa valeur (false) au serveur. Ce qui pose problème lorsque notre méthode l’attend !
Les développeurs ont ainsi trouvée une astuce :
- Si la CheckBox n’est pas cochée, lors de la validation du formulaire le serveur récupérera la valeur du champ hidden qui porte le même nom et qui est toujours à false.
- Si la CheckBox est cochée, sa valeur true sera envoyée au serveur. Ce dernier ignorera alors le champ hidden.