我在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"]
(因为通过服务器端字符串构建选中了复选框)。 1
和Request.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" />
属性已设置为服务器端,如何在发回时确定是否实际检查过它?这是正常行为吗?
答案 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调用以确定是否需要检查它们。
真的很垃圾,但问题也是如此;)