我在我的demopage中使用了一个复选框和一个按钮。在复选框中,AutopostBack属性为false,我在
上使用了服务器端事件checkbox_checkedchanged()<asp:CheckBox ID="CheckBox1" runat="server"
oncheckedchanged="CheckBox1_CheckedChanged" /><asp:Button ID="Button1" runat="server"
Text="Button" />
代码隐藏
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
Response.Write("checked");
}
protected void Page_Load(object sender, EventArgs e)
{
}
现在,当我单击按钮(在调试模式下)时,首先进入pageload,然后触发CheckBox1_CheckedChanged事件。
我想要解释。而不是启用viewstate为什么复选框事件会被触发?
答案 0 :(得分:0)
使AutoPostback = False只是推迟事件。如果确实如此,那么就会发生回发事件。在您的方案中,每当回发表单时,复选框控件都会看到其状态已更改(来自POST数据)并引发了CheckedChanged事件。
不确定为什么要在这里讨论视图状态。但即使禁用了视图状态,您也会看到这种行为,因为任何控件都有两个状态包 - ViewState和ControlState。 ControlState携带被认为是其工作所需的关键控制信息,并且不能被禁用。因此,在这种情况下,Checkbox的先前状态将存储在控制状态中。