当我尝试在jquery中序列化<%: Html.CheckBox("Something", true) %>
时(使用form.serialize()),我得到两个复选框,一个表示true,另一个表示false。我知道MVC呈现true,false表示复选框是真的,所以如果我没有通过javascript,我只是检查是否存在true,但是我怎么知道在执行表单后是否检查了我的复选框。序列
答案 0 :(得分:4)
如果查看输出HTML - 您会看到Html.Checkbox()实际上在其中呈现了具有相同名称的其他隐藏输入。这就是你看到两个价值观的原因。我相信MS决定这样做,以便正确的bool获得POST(而不是复选框的'on'字符串值)。
为了解决这个问题,我再也不会使用Html.Checkbox()助手了,我总是自己编写完整的HTML。
答案 1 :(得分:0)
为什么不简单:
var isChecked = $('#idofyourcheckbox').is(':checked');
就form.serialize()
字符串中存储的值而言,它们注定要转到服务器,您只需使用布尔属性即可。