Comment soumettre décoché la case aussi
Si la case n'est pas cochée, cliquer sur le bouton soumettre le formulaire bouton ne permet pas de soumettre toutes les données.
Certaines cases peuvent pas être présents dans la forme selon les champs de formulaire sélectionné par l'utilisateur. Afin de présenter le contrôleur n'a pas la possibilité de déterminer si la décoché la case était présent dans la forme ou pas.
Si la base de données contient la valeur true pour cette colonne, cette propriété n'est pas mis à jour pour de faux.
Case nom est la même que la base de données boolean nom de la colonne.
Comment à force de formulaire pour soumettre les cases à cocher qui sont librement de l'état ou de toute autre idée de
définir la valeur dans la base de données à false si la case n'est pas cochée, mais pas pour changer la valeur dans la base de données si la case n'est pas présent dans le formulaire ?
jquery, jqueryui, asp.net 2 mvc sont utilisés
Vous devez vous connecter pour publier un commentaire.
C'est un problème commun avec des cases à cocher dans les formulaires HTML et n'est pas unique à ASP.NET.
La réponse est d'avoir un champ caché qui accompagne chaque case à cocher. Lorsque la case est modifiée, utilisez un événement côté client pour mettre à jour le champ caché.
Le champ caché sera toujours soumis.
Toutefois, étant donné que vous utilisez ASP.NET MVC, si vous utilisez le
HTML.CheckBoxFor
helper, il va gérer automatiquement pour vous.void RenderFormField(StringBuilder sb) { switch (col.ColumnType) { case ColumnType.Boolean: sb.AppendFormat("<input type='hidden' value='false' name='{0}' />", col.PropertyName); sb.AppendFormat("<input type='checkbox' id='{0}' name='{0}' ", col.PropertyName); sb.Append("disabled='disabled' ");
. Est-il raisonnable/comment remplacer stringbuilder avec CheckBoxFor ou d'autres helper dans ce cas ?HTML.CheckBoxFor
et copiez le code HTML qui en résulte (et de s'assurer que vous attrapez toutes les Javascript inclusion). Cependant, en règle générale, je voudrais essayer d'éviter de générer un formulaire de cette façon. Peut-être vaut ouvrir une autre question en détaillant ce que vous essayez d'atteindre si vous souhaitez explorer d'autres options. Bonne chance!C'est un problème très commun - lorsque la case n'est pas cochée il l'habitude de l'envoyer au serveur la valeur off/faux par lui-même. Les plus populaires réponse que j'ai trouvé a été d'ajouter un champ caché avec le même nom que la case et de la valeur = false. Mais alors, quand quelqu'un, il a vérifié qu'il m'a envoyé deux valeurs.
Et je n'aimais pas ça. C'est ce que j'ai fait:
Quelque part dans le HTML:
En JQuery:
Première étape est de définir des valeurs cachées sur toutes les cases qui ne sont pas contrôlés.
Deuxièmement, nous devons réagir sur l'utilisateur en cliquant sur la case: alors que la désélection d'ajouter un champ caché, lors de la sélection d' - supprimer en regard de la fratrie dans les DOM - nous nous attendions à ce champ caché là.
AVERTISSEMENT: lorsque les cases de bon parent, vous devriez vérifier si le frère suivant est de type hidden et puis l'enlever!:
Et ça fonctionne pour moi 🙂
Mon plus brefs solution: utiliser une case à cocher du onchange() événement pour définir un frère caché de 0 ou de 1. Comme suit:
Soumettre qu'envoie le frère caché, PAS de la case, car il n'a pas de nom d'attribut. Ce qui est au dessus est sérialisé en tant que "...&Sexe=1..." ou "...&Sexe=0..." selon isMale valeur.
Je me suis retrouvé dans cette question récemment, et c'est ma solution.
- Je le faire sans champ caché.
Il suffit de changer la valeur de la case à cocher 'off', et assurez-vous qu'il est vérifié si elle est envoyée.
Note: je ne l'ai testé contre un serveur php, mais il devrait fonctionner.
J'ai rencontré un problème similaire lors de l'utilisation de jQuery/Java - au Lieu de l'utilisation d'un autre champ caché, j'ai forcé une présentation à chaque fois que le formulaire a été enregistré, indépendamment de savoir si les champs ont été modifiés.
par exemple, Si
chkBox1 =unchecked
(enverra null - contrôle de la valeur de l'attribut via jQuery onClick ou de l'événement onChange de case à cocher)et
ChkBox2=checked
(enverra Y)sont à l'écran des valeurs et j'essaie d'enregistrer les données,dans mon code Java-je effectuer un null vérifier la valeur obtenue dans la lecture et interpréter une valeur null comme un 'N'.
Cela permet d'éviter la surcharge d'un champ caché, bien que l'on est libre de choisir la solution qui répond à leur situation particulière.
Mon formulaire est créé dynamiquement, donc en incorporant de nouveaux champs cachés aurait été assez compliqué. Pour moi, il fonctionne par modifier temporairement le type de champ dans un gestionnaire de soumission de formulaire.
Cela se sent un peu sale, mais il fonctionne pour mon.