2016-11-30 50 views
0

我有一個表單,在模式彈出的Ajax表單中有一個複選框,當用戶在文本框中輸入數據並按提交時,發佈的值和Modal已關閉。但是,如果用戶在文本框中輸入一個值,然後檢查複選框,表單將提交,並且如果複選框被選中,視圖將在這次返回到模式。我需要離開表單,以便用戶可以提交另一個條目。問題是,文本框保持其狀態,這是我想要的,複選框也是如此,但是,複選框的底層值將切換回假,即使複選框仍然被選中...
有點難倒。複選框未在部分視圖中綁定AJAX回發

@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 Post之後CheckBox仍然被選中,但JS Script Check顯示false?如果我註釋掉CloseModal並查看代碼,Value設置爲False?但是如果我再次發佈它通過爲真? 再次驗證ChkForCheckBox()並顯示錯誤.....
我錯過了一些東西。

+0

我相信我解決了它,但仍然不知道爲什麼。如果我在複選框中添加一個類,並按照預期的方式對類執行完全相同的.prop('checked'),我想它與CheckBoxFor()的工作方式有關。 –

+0

因此,當你第二次發佈(在複選框選中後發佈一次)是控制器上的值是真還是假? – JB06

+0

如果複選框被選中,第二個帖子中發回的值爲True,但如果我在Jquery上使用複選框並且它是ID,它將返回false。即使來源顯示它的錯誤。 –

回答

0

您的檢查顯示爲false,因爲CheckBoxFor() HTML幫助程序也會生成隱藏的輸入。即使複選框沒有被選中,這個值仍然會被髮布。您的支票必須簡單地找到隱藏的輸入值而不是複選框的值。

+0

我相信你是對的,但奇怪的是,即使隱藏字段是錯誤的,後續的帖子也是如此。 –

+0

只要複選框被選中,它的值將優先於隱藏域保存的值 – JB06