MVC Html.CheckBox et le problème de soumission de formulaire
Fou problème de la soumission des valeurs dans le code Html.Case à cocher dans ASP.NET MVC RC
Certaines valeurs sont tout simplement pas venir à la Demande.Params
À mon formulaire, j'ai cette ligne dans le cycle:
<%=Html.CheckBox("cb" + p.Option.Id, p.Option.IsAllowed, new { value = 6 })%>
et qu'elle rend à suivant:
<input checked="checked" id="cb17" name="cb17" type="checkbox" value="6" />
<input name="cb17" type="hidden" value="false" />
<input checked="checked" id="cb18" name="cb18" type="checkbox" value="6" />
<input name="cb18" type="hidden" value="false" />
<input id="cb19" name="cb19" type="checkbox" value="6" />
<input name="cb19" type="hidden" value="false" />
<input id="cb20" name="cb20" type="checkbox" value="6" />
<input name="cb20" type="hidden" value="false" />
<input checked="checked" id="cb21" name="cb21" type="checkbox" value="6" />
<input name="cb21" type="hidden" value="false" />
Après la soumission du Formulaire, je vais obtenir quelque chose comme:
Form.Params["cb17"] = {6, "false"}
Form.Params["cb18"] = {6, "false"}
Form.Params["cb19"] = {"false"}
Form.Params["cb20"] = {"6,false"}
Form.Params["cb21"] = {"false"}
Dans la chaîne de demande Certains des paramètres sont affichés deux fois (situation normale) et certains qu'UNE seule FOIS (seule valeur du champ caché).
Il semble qu'il ne repose pas sur si la case a été cochée ou pas, si la valeur a changé ou alors...
Quelqu'un, face à une telle situation? Comment puis-je contourner?
source d'informationauteur Andriy Tkach
Vous devez vous connecter pour publier un commentaire.
et dans votre contrôleur
la raison pour laquelle vous vérifiez faux car le Html Case helper fait ce genre de chose bizarre pour valeur true
Vrai retourne:
de sorte que vous peut-être pensé que c'était deux valeurs, mais c'est juste l'un et de moyens véritable
False renvoie:
C'est effectivement la façon dont il devrait fonctionner selon les spécifications.
Il n'a rien à voir avec ASP.NET MVC, mais lorsqu'une case est décochée, il est pas inclus dans le POSTE de collection.
Vous obtenez deux valeurs parce que vous avez à la fois une case à cocher et une entrée avec le même nom (et ceux que vous avez deux valeurs sont le plus susceptibles avec des cases cochées).
Edit: spécifications du W3C
Sans la nécessité de demander à la base de données sur l'id après le formulaire de soumission/avant de les enregistrer (Apatrides mode), j'ai produit code:
Merci les gars pour m'aider à contourner ce problème!
J'utilise ceci:
et ensuite appeler comme ceci: