.NET经验心得探讨社区  
请在这里用键盘敲打出属于你的地位!

ViewState可以在控件,页,程序,全局配置中设置。缺省情况下 EnableViewState 为 true 。如果要禁止所有页面 ViewState 功能,可以在程序配置中把 EnableViewState 设为 false 。


在控件中:

<asp:DataGridEnableViewState="false"%>

DataGrid1.EnableViewState= false;
在页中:

<%@ PageEnableViewState="false" %>

Page.EnableViewState= false;
在程序中:

在web.config中加入

<pages enableViewState="false" />
在全局配置:

在machine.config中修改

<pages enableViewState="false" />

EnableViewState优先级别:
全局配置 < 程序 < 页< 控件

注意:下列服务器控件不能禁止ViewState

Textbox
Checkbox
Checkbox List
RadioButtonList
上面控件的状态通过IPostBackEventHandler 和 IPostBackDataHandler接口处理,而不是ViewState的机制,所以EnableViewState没有效果。(我发现类似于input的控件EnableViewState都没有作用)

ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值。

ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能。它的类型是system.Web.UI.StateBag,一个名称/值的对象集合。

当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。当然这些全部是由ASP.NET负责的,对用户来说是透明的。

Session存在于服务器端可以跨页面.耗费服务器资源.
ViewState载体是页面文件,消耗带宽.

posted on 2006-02-08 14:12  苦涩的咖啡  阅读(324)  评论(1编辑  收藏  举报