C# 如果enableviewstate被禁用,asp:controls值存储在何处?

C# 如果enableviewstate被禁用,asp:controls值存储在何处?,c#,asp.net,C#,Asp.net,我在演示页面中使用了复选框和按钮。In checkbox AutopostBack属性为false,并且我使用了服务器端事件复选框\u checkedchanged on <asp:CheckBox ID="CheckBox1" runat="server" oncheckedchanged="CheckBox1_CheckedChanged" /><asp:Button ID="Button1" runat="server" Text="Bu

我在演示页面中使用了复选框和按钮。In checkbox AutopostBack属性为false,并且我使用了服务器端事件复选框\u checkedchanged on

<asp:CheckBox ID="CheckBox1" runat="server" 
        oncheckedchanged="CheckBox1_CheckedChanged" /><asp:Button ID="Button1" runat="server"
        Text="Button" />
现在,当我首先单击调试模式中的按钮时,它进入pageload,然后触发CheckBox1_CheckedChanged事件


我想解释一下,为什么会触发复选框事件,而不是启用viewstate?

使AutoPostback=False只是延迟事件。如果这是真的,那么回发将触发事件。在您的场景中,每当表单被发回时,复选框控件都会看到其状态已从POST数据中更改,并引发CheckedChanged事件


不确定为什么在这里讨论视图状态。但是,即使视图状态被禁用,您也会看到这种行为,因为任何控件都有两个状态包-ViewState和ControlState。ControlState携带工作所需的关键控制信息,不能禁用。因此,在这种情况下,复选框以前的状态将存储在控件状态中。

您能否给我一些链接,让我对视图状态和控件状态有更清晰的了解,因为它确实让我困惑……因此,只有控件作者才能访问和处理ControlState,建议只向控件状态中添加关键数据。这里有几个链接1 2 3
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    Response.Write("checked");
} 


protected void Page_Load(object sender, EventArgs e)
{

}