2016-11-30 2 views
0

J'ai un formulaire avec un champ et une case à cocher dans un formulaire Ajax sur un pop-up modal, Lorsque l'utilisateur entre les données dans la zone de texte et appuie sur soumettre les valeurs sont affichées et le modal est fermé . Cependant, si l'utilisateur entre une valeur dans la zone de texte et cocher la case, le formulaire sera envoyé et la vue retournera à la modale si la case est cochée. Je dois laisser le formulaire pour que l'utilisateur puisse soumettre une autre entrée . Le problème est que la zone de texte maintient son état, ce qui est ce que je veux et la case à cocher, mais, la valeur sous-jacente de la case revient à false même si la case est encore cochée ...
Un peu perplexe.CheckBox ne lie pas dans partielle AJAX PostBack

@using (Ajax.BeginForm("SaveValues", "ControllerName", new AjaxOptions() 
{ HttpMethod = "Post", 
OnComplete = "ChkForCheckBox();" 
})) 
{ 
@Html.TextBoxFor(x => x.DDate) 
@Html.CheckBoxFor(x => x.Dupe) 
<button type="submit" >Save</button> 
} 

et dans le contrôleur.

public void SaveValues(string DDate, bool Dupe) 
{ 
    var rslt = repo.Post(DDate); 
} 

Le JS. Cependant, après le Ajax Post, le CheckBox est toujours vérifié, mais la vérification du script JS est fausse? Si je commente le CloseModal et examine le code, la valeur est False? mais si je poste à nouveau, cela se révèle vrai? Vérification de la ChkForCheckBox() à nouveau et il montre faux .....
Il me manque quelque chose.

+0

Je crois que je l'ai résolu mais je ne sais toujours pas pourquoi. si j'ajoute une classe à la case à cocher et que je fais exactement la même chose .prop ('checked') dans la classe, cela fonctionne comme prévu, je suppose que cela a quelque chose à voir avec le fonctionnement de CheckBoxFor(). –

+0

Donc, lorsque vous postez la deuxième fois (après avoir coché une fois avec la case cochée), la valeur sur le contrôleur est-elle vraie ou fausse? – JB06

+0

si la case à cocher est cochée, la valeur renvoyée dans la deuxième publication est vraie, mais si j'interroge la case à cocher en utilisant Jquery et son ID, elle renvoie false. Même la Source montre que c'est faux. –

Répondre

0

Votre vérification montre faux car l'aide HTML CheckBoxFor() génère également une entrée masquée. C'est ainsi que la valeur est toujours affichée même si la case à cocher n'est pas cochée. Votre vérification doit simplement trouver la valeur d'entrée cachée au lieu de la valeur de la case à cocher.

+0

Je crois que vous avez raison, mais la partie étrange est que les messages suivants ont la valeur comme étant vrai, même si le champ caché est faux. –

+0

Tant que la case est cochée, sa valeur aura préséance sur la valeur que le champ caché contient – JB06