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

时间:2010-04-23 11:45:02

标签: asp.net viewstate

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

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

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:-2)

因为HTML控件是无状态控件。因此,Microsoft提供了一个ViewState功能,可以在用户将数据发送到服务器时或在回发后保持相同的值时提供帮助。因此,您必须将属性“EnableViewState”设置为True。默认情况下,所有ASP.NET控件的EnableViewState都设置为True