如果禁用enableviewstate,则存储asp:controls值的位置?

时间:2010-08-31 06:03:07

标签: c# asp.net

我在我的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为什么复选框事件会被触发?

1 个答案:

答案 0 :(得分:0)

使AutoPostback = False只是推迟事件。如果确实如此,那么就会发生回发事件。在您的方案中,每当回发表单时,复选框控件都会看到其状态已更改(来自POST数据)并引发了CheckedChanged事件。

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