佟大为像周星驰:EnableViewState 属性

来源:百度文库 编辑:偶看新闻 时间:2024/05/01 23:24:28

EnableViewState 属性

指示是否在页请求之间保持视图状态。如果要保持视图状态,则为 true;否则为 false。默认值为 true。

以上为官方对 EnableViewState 的解释,有些难懂,我们以示例的方式解释,我们创建一个 Web Form,并添加一个 ListBox、一个 Button、一个方法。

程序代码

<%@ Page Language="C#" %>



    EnableViewState 属性


   

   

     
       
     

     
   

   


在浏览器中访问该网页,得到 HTML 源文件中如下内容:

这个 hidden 框存储的是各个控件的属性值与状态,比如 ListBox 的 Text、Value、Selected 等,这也是为什么在 ASP.NET 里,可以在服务器端获得列表的 Text 值的原因。

开始实验

现在点击按钮,服务器端将执行 AddItem 方法,ListBox 中的内容也随之增多,查看 HTML 源文件中的“__VIEWSTATE”也随之增多 。关于 DateTime 请参见 ASP.NET 时间操作。

再次实验

现在我们修改 ListBox 的 EnableViewState 属性为 false。

再次点击几下按钮,我们可以发现,之前点击按钮添加的 Item 都不见了,现在每次点击按钮,ListBox 中都只有两个 Item,一个为静态指定的,一个是通过 AddItem 方法添加的。这是由于 ListBox 的内容没有通过“__VIEWSTATE”传送到服务器端,服务器端不知道 ListBox 之前还动态添加的有内容。

注意观察,添加的数字并不相同,这说明每次点击都执行了 AddItem 方法,而不是有些文章所说的,使用 EnableViewState="false" 时方法只执行一次,方法是每次都执行,只是由于没有获得之前动态添加(编辑、删除)后的内容,所以只有最新添加(编辑、删除)的内容。

总结

EnableViewState 指定是否向服务器端传送某(些)控件的属性值、状态。

EnableViewState 的默认值为 true,设置为 false 可以降低数据传送量,当然应该在程序逻辑允许设置为 false 的情况下。

EnableViewState 可用于控件,也可用于 @ Page、@ Control、@ Master 指令语法。当控件的 EnableViewState 的设置与指令语法的设置不一致时,取 false 值。