根据W3C的规则,未选中的checkbox和禁用的控件不是有效控件,不会被POST传值。因此如果要未选中的checkbox表示值0的话,就不得不用一个hidden表单。来完成覆盖传值: <input type="hidden" name="is_default" value="0"> <input type="checkbox" name="is_default" value="1"> 生成这样的表单,当checkbox未选中的时候,提交的是hidden表单。值0就被提交到后台了。 当checkbox都选中的时候,hidden和checkbox表单都被提交了,但是因为它们的name是一样的,所以hidden的值被checkbox覆盖了。所以就得到了数值1。 经测试,在PHP中,如果有多个name相同的表单,post到服务器,后台仅取最后一个表单的值。而在ASP.NET中,会把这个多个表单的值合并成逗号分割的值。因此,这种方法用在PHP下更合适。