为什么有些asp.net控件保持其状态,尽管它的EnableViewState属性为false?

Ahm*_*tun 3 asp.net viewstate

在网站上放置一个文本框,一个复选框和一个按钮.将textbox的"EnableViewState"属性设置为false,将复选框设置为false.将内容写入文本框并选中复选框.单击按钮.

为什么仍然会写入文本框并在响应后选中复选框?

Nic*_*ver 8

有些东西并不完全依赖于ViewState.在您列出的控件中,这些值在发送到服务器的POST中可用,因此它们已经离开那里并且控件以这种方式恢复其状态.

其他的东西,例如in中的文本<asp:Label>不会以任何方式发回,并且它们将在没有ViewState的情况下丢失其数据.对于其他属性也是如此,例如文本框的样式等等......只有它value会被恢复,因为所有这些都被发送回来,因此,所有它都被编码为抓取和恢复.如果你说要把它变成红色,这将在回发时丢失.

作为一般规则,控件可以从发布的数据严格恢复的内容将在回发时恢复,其他所有内容都将丢失.