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的原理和使用相关推荐

  1. viewstate 解码 php,.NET_asp.net中ViewState的用法详解,在web窗体控件设置为runat = serv - phpStudy...

    asp.net中ViewState的用法详解 在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了 ...

  2. java final 实例_Java中final实现原理的深入分析(附示例)

    本篇文章给大家带来的内容是关于Java中final实现原理的深入分析(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. final在Java中是一个保留的关键字,可以声明成员变 ...

  3. 线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理

    1.一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务.阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使 ...

  4. FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析

    FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析 怎么查找就绪任务中优先级最高的? tasks.c中声明了一个全局变量 uxTopReadyPriority,任务从其他状态进入就绪 ...

  5. 【直播预告】计算机视觉中数据增强原理和实践

    应广大粉丝要求,以后有三AI会多组织直播,分享更多实践的干货知识,下面预告一下下周六的知乎Live直播-计算机视觉中数据增强原理和实践. 1.直播基本信息 时间:2019年4月20日20:00开始. ...

  6. vue指令写在html中的原理,详解Vue中的MVVM原理和实现方法

    对Vue中的MVVM原理解析和实现首先你对Vue需要有一定的了解,知道MVVM.这样才能更有助于你顺利的完成下面原理的阅读学习和编写下面由我阿巴阿巴的详细走一遍Vue中MVVM原理的实现,这篇文章大家 ...

  7. 产品工作中的金字塔原理

    本文有PMCAFF 原创作者 咸鱼 原创发布于pmcaff.com 金字塔原理是国外一个慈祥的老太太(巴巴拉·明托)提出的一个方法论,主要是帮助我们清晰的思考.表达和写作的思维方式. 一. 什么是金字 ...

  8. 【转载】word2vec 中的数学原理详解

    文章目录 一.前言 二.预备知识 三.背景知识 四.基于 Hierarchical Softmax 的模型 五.基于 Negative Sampling 的模型 六.若干源码细节 原文传送门: wor ...

  9. 中间件是什么?在.NET Core中的工作原理又是怎样的呢?

    本文出自<从零开始学ASP.NET CORE MVC> 推荐文章:ASP.NET Core appsettings.json文件 ASP.NET Core 中的中间件(Middleware ...

最新文章

  1. 通过docker搭建zabbix监控系统
  2. iOS证书申请详细流程
  3. 一个SAP开发人员的养蚕流水帐
  4. arrylist和linked list区别
  5. 如何创建php文件,PHP如何生成.php程序文件
  6. linux按日期备份mysql,在Linux、Windows上如何按日期逻辑备份数据库
  7. 九度OJ-1525 子串逆序打印
  8. Keras Model AttributeError:’str‘ object has no attribute ’call‘
  9. ubuntu16.04中安装MESA 17.3.3
  10. mysql sql优化与调优机制详解_MySQL性能调优——锁定机制与锁优化分析详解
  11. 图书管理系统完整代码
  12. HiJson修改版,修改为按json字符串默认字段顺序格式化
  13. ArduCopter——ArduPilot——Notch Filter(陷波滤波器)
  14. Spark实践的阶段性总结
  15. 2009年最值得注意炒作题材
  16. 一个人靠不靠谱,在于能力是否配得上承诺
  17. 医学图像配准中的深度学习综述论文解读
  18. selenium自动化之PO模型
  19. 3D游戏模型教程系列:3D max安装
  20. jQuery获取或设置元素的属性值

热门文章

  1. CSS3 Transitions, Transforms和Animation使用简介与应用展示
  2. java4android视频下载_《Java4android》视频学习笔记——面向对象的应用(一)
  3. js在html中加文字走马灯特效,JS实现文字的走马灯效果
  4. 计算机路由器的配置文件,如何将网件netgear路由器的配置文件备份到电脑
  5. MATLAB代码:高压直流输电 关键词:MMC- HVDC,预测控制,电容均压 两端MMC- HVDC输电模型是基于MAT LAB/simulink软件搭建的
  6. 三端柔型直流输电模型VSC- HVDC(MATLAB搭建)
  7. 淮阴工学院计算机科学与技术咋样,淮阴工学院计算机学院计算机科学与技术专业(NIIT)人才培养方案介绍...
  8. 基于stm32片内Flash数据的DAC输出
  9. 广告法禁用词语之ASP替换函数
  10. 霍尔电流传感器ACS712/ACS724/CH701应用于物联网智能光伏电路