2016-11-30 8 views
0

Ich habe ein Formular mit einem Feld und einem Kontrollkästchen in einem Ajax-Formular auf einem Modal Popup, wenn der Benutzer die Daten in das Textfeld eingibt und drücken Sie Senden die Werte werden gepostet und das Modal ist geschlossen . Wenn der Benutzer jedoch einen Wert in das Textfeld eingibt und dann das Kontrollkästchen aktiviert, wird das Formular gesendet und die Ansicht kehrt zu diesem Zeitpunkt zum Modal zurück. Wenn das Kontrollkästchen aktiviert ist, muss das Formular verlassen werden, damit der Benutzer einen weiteren Eintrag senden kann . Das Problem ist, dass die Textbox ihren Zustand beibehält, was ich will und auch die Checkbox, aber der Wert der Checkbox wird auf "falsch" zurückgesetzt, obwohl das Kontrollkästchen noch aktiviert ist ...
Ein wenig ratlos.CheckBox nicht bindend in PartialView 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> 
} 

und im Controller.

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

Die JS.

Allerdings wird nach dem Ajax Post die CheckBox noch überprüft, aber der JS Script Check zeigt false? Wenn ich das CloseModal auskommentiere und den Code durchschaue, wird der Wert auf False gesetzt? aber wenn ich wieder poste, kommt es als wahr durch? Überprüfen Sie die ChkForCheckBox() erneut und es zeigt falsch .....
Ich vermisse etwas.

+0

Ich glaube, ich habe es gelöst, aber immer noch nicht sicher, warum. Wenn ich der Checkbox eine Klasse hinzufüge und genau die gleiche .prop ('checked') zu der Klasse mache, funktioniert sie wie erwartet, ich nehme an, sie hat etwas damit zu tun, wie CheckBoxFor() funktioniert. –

+0

Also, wenn Sie das zweite Mal (nach der Buchung einmal mit der Checkbox aktiviert) ist der Wert auf dem Controller wahr oder falsch? – JB06

+0

Wenn die Checkbox aktiviert ist, ist der Wert, der in der zweiten Post zurückgesendet wird, True, aber wenn ich die Checkbox über Jquery und seine ID interagiere, wird false zurückgegeben. Sogar die Quelle zeigt, dass es falsch ist. –

Antwort

0

Ihre Prüfung wird falsch angezeigt, da der HTML-Hilfsprogramm CheckBoxFor() auch eine ausgeblendete Eingabe generiert. Dies ist der Fall, auch wenn das Kontrollkästchen nicht aktiviert ist. Ihre Überprüfung muss einfach den versteckten Eingabewert anstelle des Werts der Checkbox finden.

+0

Ich glaube, Sie haben Recht, aber der seltsame Teil ist, dass die nachfolgenden Beiträge den Wert als wahr haben, obwohl das Hiddenfield falsch ist. –

+0

Solange das Kontrollkästchen aktiviert ist, hat der Wert Vorrang vor dem Wert, der im ausgeblendeten Feld enthalten ist – JB06