未选中的选中复选框始终返回值

时间:2014-04-30 14:49:40

标签: html asp.net checkbox

我在ASP.NET页面上有3个HTML复选框。

<input type="checkbox" id="level-option-1" name="level-option-1" value="1" checked />
<input type="checkbox" id="level-option-2" name="level-option-2" value="2" />
<input type="checkbox" id="level-option-3" name="level-option-3" value="3" />

这些字符串是在服务器端创建的,并添加到页面中(通过设置Text的{​​{1}})。 Literal已经过检查。

回发页面时,level-option-1的值为Request.Form["level-option-1"](因为通过服务器端字符串构建选中了复选框)。 1Request.Form["level-option-2"]不存在(正如我所料)。

如果取消选中Request.Form["level-option-3"](在浏览器中),并且选中了level-option-1(在浏览器中),则level-option-2在发回时仍会显示Request.Form["level-option-1"]的值。 1的正确值为Request.Form["level-option-2"]2不存在。

我不明白Request.Form["level-option-3"]总是有价值。我已经尝试过使用XHTML Request.Form["level-option-1"]同样的结果。

如果我修改字符串构建以便生成以下内容 - checked="checked"仅在浏览器中检查时存在值Request.Form["level-option-1"] - 这正是我所期望的。

1

假设<input type="checkbox" id="level-option-1" name="level-option-1" value="1" /> <input type="checkbox" id="level-option-2" name="level-option-2" value="2" /> <input type="checkbox" id="level-option-3" name="level-option-3" value="3" /> 属性已设置为服务器端,如何在发回时确定是否实际检查过它?这是正常行为吗?

2 个答案:

答案 0 :(得分:0)

据我所知,如果它返回一个变量(非空白或非空),则选择它。见http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.aspx

if (Request.Form["checkboxName"] != null && Request.Form["checkboxName"] == "on")
     {
         Response.Write("This checkbox is selected");
     }
     else
     {
         Response.Write("This checkbox is not selected");
     }

答案 1 :(得分:0)

我无法完全解决这个问题,但我最终使用的解决方案是构建没有checked属性的HTML字符串(服务器端)。然后是客户端,进行AJAX调用以确定是否需要检查它们。

真的很垃圾,但问题也是如此;)