泰宁新闻网

.net 中viewstate的原理和使用

泰宁新闻网 http://www.tainingxinwen.cn 2021-01-13 10:43 出处:网络
viewstate,.net 中viewstate的原理和使用 ASP.NET中的ViewState        ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加

viewstate,.net 中viewstate的原理和使用

ASP.NET中的ViewState

       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负责的,对用户来说是透明的。

使用ViewState的条件

如果要使用 ViewState,则在 ASPX 页面中必须有一个服务器端窗体标记 (<form runat=server>)。窗体字段是必需的,这样包含 ViewState 信息的隐藏字段才能回传给服务器。而且,该窗体还必须是服务器端的窗体,这样在服务器上执行该页面时,ASP.NET 页面框架才能添加隐藏的字段。 
Page 
 EnableViewState 属性值为 true
控件的 EnableViewState 属性值为 true

页面本身将 20 字节左右的信息保存在 ViewState 中,用于在回传时将 PostBack 数据和 ViewState 值分发给正确的控件。因此,即使该页面或应用程序禁用了 ViewState,仍可以在 ViewState 中看到少量的剩余字节。

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

<asp:DataGrid EnableViewState="false"%>

DataGrid1.EnableViewState = false;

在页中:

<%@ Page EnableViewState="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没有效果。

原文地址:https://www.cnblogs.com/sutengcn/archive/2007/01/26/631309.html

.net 中viewstate的原理和使用的相关内容如下:

本文标题:.net 中viewstate的原理和使用
http://www.tainingxinwen.cn/qitaxinxi/601292.html

0

精彩评论

暂无评论...
验证码 换一张
取 消