Asp.Net - 在回发后调试CheckBox为什么Checked = true

时间:2009-12-04 16:57:59

标签: asp.net checkbox

我有一个相当复杂的页面,其中包含一个复选框:

// In the .aspx
<asp:CheckBox id="MyCheckBox" runat="server" text="Testing" />

// In the .aspx.cs
protected System.Web.UI.WebControls.CheckBox MyCheckBox;

我所看到的是,在回发到页面后,复选框以某种方式结束,当我到达Page_Load事件时,其Checked属性设置为true,我无法弄清楚为什么 - 我没有设置复选框的值或以任何方式修改复选框,此页面上没有转发器控件,当我提交表单时肯定不会检查CheckBox。

虽然页面本身非常复杂,但与CheckBox本身的交互完全是微不足道的 - 我已经花了很多时间试图弄清楚如何将此复选框的Checked值设置为true,但没有成功 - 有什么调试/诊断可以找出为什么这个复选框的检查值发生了变化?

更新:所以我现在转而使用HtmlInputCheckBox控件:

// In the .aspx
<input type="checkbox" id="TelephonyEnabledCheckBox" runat="server" />

// In the .aspx.cs
protected System.Web.UI.HtmlControls.HtmlInputCheckBox TelephonyEnabledCheckBox

完全相同的事情仍然发生 - 在OnInit()期间Checked是假的,但是当我到Page_Load()检查时是真的。该邮箱肯定在回发时未选中,Request.Form["TelephonyEnabledCheckBox"]"0"(表示未选中)。

怎么回事?目前我担心我需要直接使用回发值(但是理解最新情况会很好)

1 个答案:

答案 0 :(得分:1)

我的建议是建立一个只有复选框的简单页面,然后看看它的行为方式。这样,您就可以完全确定问题不是由与页面上其他内容的奇怪交互引起的。