[ASP.NET MVC]我的CheckBox傳到Controller總是 true

我的CheckBox傳到Controller總是 true

今天發現我的CheckBox傳到Controller總是true,後來查到原來是我的jQuery在傳值時寫錯了。


MVC的CheckBox Helper,@Html.CheckBoxFor(x => x.test)
會產生兩個input,它們的type分別是checkbox 和 hidden
<input type="checkbox" id="test" name="test" value="true">
<input type="hidden" name="test" value="false">
本來當checkbox沒有被勾選時,submit時不會傳過去,這時應該只會傳hidden的值。


但我在submit時是使用jQuery的$.post,我在傳值時是這樣寫:$("#test").val()
而只有checkbox有 id,所以不管我有沒有勾選,他永遠取到的值都是true。
後來將 $("#test").val() 改成 $("#test").is(":checked")就沒問題了。