EnableViewState详细分析

ASP.NET中,很多地方可以设置EnableViewState,本文主要说明一下在不同位置设置EnableViewState的效果。

1. 在web.config中

在page小节中设置,比如:

<pages enableViewState="false">
 
这样的设置后,所有没有明确指定EnableViewState的控件,都会使用在web.config中指定的值。

2. 在MasterPage中

当在MasterPage中EnableViewState=false时,表示禁用了使用该MasterPage的页面的视图状态信息,包括所有控件,即使页面或控件明确指定EnableViewState=true。

3. 在Page中

当在Page中EnableViewState=false时,表示禁用了该Page的页面的视图状态信息,包括所有控件,即使控件明确指定EnableViewState=true。

4. 在UserControl中

当在UserControl中EnableViewState=false时,表示禁用了该UserControl的视图状态信息,包括所有控件,即使控件明确指定EnableViewState=true。

5. 在控件中

当在控件中EnableViewState=false时,表示禁用了该控件的视图状态信息。

注:如果要确保某个控件使用视图状态,可以在该控件的OnInit事件中,指定该控件的父控件和Page使用视图状态。

我通常的做法:

在web.config中禁用视图状态,当需要启用时再明确指定。

posted @ 2008-12-01 17:17 andy.wu 阅读(1941) 评论(1) 编辑 收藏

 回复 引用 查看   
#1楼 2008-12-30 15:34 糊涂而已      
我是初学者,最近也在看ViewState相关,这篇文章不知道是否是您的原创。文章里的几点我觉着也是正确的,他们的优先级是按照文章中的顺序来的。我说说我在web.config中设置EnableViewState=false时遇到的问题,也不叫问题,本来就是这样吧。我有好几个页面,都用了一个母版页,然后每个页面中又有好几个UserControl,假如突然有个需求,我要在一个UserControl中使用ViewState,结果需要把该UserControl,它所在的Aspx页面,以及Aspx页面所引用的MasterPage都要显示的把EnableViewState设置为True。这样我那个UserControl才能使用ViewState,这样让我感觉白白在web.config中设置了,还不如在我不想使用ViewState的UserControl中设置ViewState为false。我的开发都是用UserControl放在页面中。