モーダルポップアップのAjaxフォームにフィールドとチェックボックスがあるフォームがあります。ユーザーがテキストボックスにデータを入力してサブミットを押すと、値がポストされ、モーダルが閉じられます。 。しかし、ユーザーがテキストボックスに値を入力してチェックボックスをチェックすると、フォームが送信され、チェックボックスがオンになっている場合、ビューはモーダルに戻ります。ユーザーが別のエントリを送信できるようにフォームから離れる必要があります。問題は、テキストボックスが状態を維持していることです。これはチェックボックスにも当てはまりますが、チェックボックスがオンになっているにもかかわらず、チェックボックスの根底にある値がfalseに戻ってきます。
少しばかりです。CheckBoxが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>
}
およびコントローラ内にある。
public void SaveValues(string DDate, bool Dupe)
{
var rslt = repo.Post(DDate);
}
JS。
function ChkForCheckBox(){
var rslt = $('#Dupe').prop('checked');
if(!rslt){
//Close Modal
}
}
しかしAjaxのポスト後にチェックボックスがまだチェックされているが、JSスクリプトのチェックが偽を示しますか? CloseModalをコメントアウトしてコードを調べると、値はFalseに設定されますか?しかし、私が再び投稿した場合、それは真実となりますか? ChkForCheckBox()をもう一度確認すると、それは..... .....
私は何かが欠落しています。
私はそれを解決すると信じていますが、それでも理由は分かりません。私がチェックボックスにクラスを追加し、期待どおりに動作するクラスに全く同じ.prop( 'checked')を実行すると、CheckBoxFor()の動作と関係があると思います。 –
したがって、チェックボックスをオンにして1回ポストした後に2回目を投稿すると、コントローラーの値はtrueまたはfalseになりますか? – JB06
チェックボックスをオンにすると、2番目のポストにポストバックされる値はTrueですが、Jquery上で使用するチェックボックスとIDを相互に関連付けるとfalseが返されます。ソースでさえ、その偽りを示しています。 –