2016-11-30 4 views
0

モーダルポップアップの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()をもう一度確認すると、それは..... .....
私は何かが欠落しています。

+0

私はそれを解決すると信じていますが、それでも理由は分かりません。私がチェックボックスにクラスを追加し、期待どおりに動作するクラスに全く同じ.prop( 'checked')を実行すると、CheckBoxFor()の動作と関係があると思います。 –

+0

したがって、チェックボックスをオンにして1回ポストした後に2回目を投稿すると、コントローラーの値はtrueまたはfalseになりますか? – JB06

+0

チェックボックスをオンにすると、2番目のポストにポストバックされる値はTrueですが、Jquery上で使用するチェックボックスとIDを相互に関連付けるとfalseが返されます。ソースでさえ、その偽りを示しています。 –

答えて

0

CheckBoxFor() HTMLヘルパーも隠れた入力を生成するため、このチェックはfalseと表示されます。これはチェックボックスがチェックされていなくても値がまだポストされているためです。あなたのチェックは、単にチェックボックスの値の代わりに隠れた入力値を見つけるだけでなければなりません。

+0

私はあなたが正しいと信じていますが、奇妙な部分は、hiddenfieldがfalseであっても、後続の投稿が真であるという価値があるということです。 –

+0

チェックボックスがオンになっている限り、隠しフィールドに保持されている値よりも優先されます – JB06

関連する問題