ViewState是如何实现这些功能。

  1. 以名值对的方式来存控件的值,和Hashtable的结构类似;
  2. 跟踪那些ViewState中出现改变的值,以便对这些脏数据(dirty)进行进一步的处理;
  3. 通过序列化将ViewState中的值保存在页面的隐藏域(Hidden Field)中(这是默认的持久化方式),并通过反序列化得到对应的ViewState对象以便进行相应的操作;
  4. 在页面回传的过程中自动的存储ViewState中的跟踪的值。
    什么是ViewState不能做的?

  1. 自动保存一个类中变量的状态,无论是private, protected还是public的变量;
  2. 可以在页面回传的过程中记住所有状态值;
  3. 只要有了ViewState那么每次页面请求时重新构造的数据的操作是不必要的了;
  4. ViewState is not responsible for the population of values that are posted such as by TextBox controls (although it does play an important role) ViewState并不存储那些通过Post名值对回传的数据值(如TextBox的TextBox.Text);
  5. 想让ViewState替你泡一杯咖啡,做梦吧:P。

例如用GridView绑定DataSource控件展现一个类表数据,在ViewSate Enable的情况下,页面第一次加载时进行数据绑定,在随后的回发访问中,如果仍是访问当前数据视图,即没有进行分页、排序操作等,DataSource不会再进行数据绑定,因为所有的信息都可以从ViewSate中获取,不需要再次访问数据库再次绑定数据控件了。而如果你将ViewState Disable掉,那么每次访问则都需要进行数据绑定了(可以通过SqlProfiler来捕捉SqlDataSource在两种情况下对数据库的访问情况)。这个场景可能最能说明ViewSate的设计初衷了。

.NET 之ViewState的本质的更多相关文章

  1. __doPostBack 方法解析

    function __doPostBack(eventTarget, eventArgument)的eventTarget参数是引起回送的控件的ID,eventArgument参数是回调参数(与控件相 ...

  2. __doPostBack方法解析 __VIEWSTATE __EVENTTARGET __doPostBack __EVENTARGUMENT

    关于这个的另一篇博客:http://www.cnblogs.com/Silicon-Fado/archive/2009/04/21/1440437.html __VIEWSTATE:页面状态信息在客户 ...

  3. ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘

    开篇:经历了上一篇<aspx与服务器控件探秘>后,我们了解了aspx和服务器控件背后的故事.这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下.然后,再 ...

  4. atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx

    atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx 1.1. 版本历史2 2. 设计模式是什么2 2.1. 模式就是在一种场合下对某个问题的一个解决方案.& ...

  5. Webform:Application、ViewState对象的用法

    Application Application对象的作用范围是整个全局,也就是说对所有用户都有效.它在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取.它和S ...

  6. xss篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题

    前言 最早接触安全也是从xss攻击和sql注入攻击开始的. 0x01    跨站脚本攻击漏洞(XSS),是客户端脚本安全中的头号大敌,owasp top10 屡居榜首,由于攻击手法较多,开发者水平不一 ...

  7. C#-WebForm-★内置对象简介★Request-获取请求对象、Response相应请求对象、Session全局变量(私有)、Cookie全局变量(私有)、Application全局公共变量、ViewState

    内置对象: 1.Request - 获取请求对象 用法:接收传值 protected void Page_Load(object sender, EventArgs e) { TextBox1.Tex ...

  8. [从产品角度学EXCEL 00]-为什么要关注EXCEL的本质

    前言 Hello 大家好,我是尾巴,从今天开始,在这里连载<从产品角度学EXCEL>的系列文章.本文不接受无授权转载,如需转载,请先联系我,非常感谢. 与世面上的大部分EXCEL教程不同的 ...

  9. Application对象、ViewState对象、分页展示--2017年1月4日

    Application对象 存储 Application 变量  Application["application名称"] = "application的值"; ...

随机推荐

  1. debian包之间的关系

    1 debian包之间存在两大类关系 第一,依赖 第二,冲突 2 依赖类关系 2.1 depends 2.2 pre-depends 2.3 recommends 2.4 suggests 2.5 e ...

  2. PP-判断生产订单状态(关闭)

    方法一.工单号通过 resb找到对象号 然后找到状态为I0045利用表JEST与TJ02T . 方法二.函数'STATU_CHECK' 检查工单状态为'I0045' 则为已做技术性关闭. READ T ...

  3. 7-39 Math对象

    7-39 Math对象 学习要点 掌握常用的数学计算方法 温馨提示:关于学习方法的建议 不要强求自己讲参考手册上所以的属性和方法都搞清楚,原因如下: 有些属性和方法非常生僻,很少用,甚至经过一段时间后 ...

  4. android编译打包(用ant脚本打包)

    为了可以实现自动化打包,下面我介绍一下如何用ant工具来打包android项目: 直接上build.xml文件源码: <?xml version="1.0"?> < ...

  5. 后缀数组 hash求LCP BZOJ 4310: 跳蚤

    后缀数组的题博客里没放进去过..所以挖了一题写写 充实下博客 顺便留作板子.. 一个字符串S中 内容不同的子串 有 sigma{n-sa[i]+1-h[i]}   (噢 这里的h[]就是大家熟知的he ...

  6. AutoIT: 对文件系统的菜单进行操作,有专门的语句WinMenuSelectItem

    对文件系统的菜单进行操作,有专门的语句WinMenuSelectItem: Run("notepad.exe") WinWaitActive("[CLASS:Notepa ...

  7. 《Deep Learning Face Attributes in the Wild》论文笔记

    论文背景: IEEE International Conference on Computer Vision 2015 Ziwei Liu1, Ping Luo1, Xiaogang Wang2, X ...

  8. 强类型的HTML模板方法与直接显示模型

    模型: public class Article { [Display(Name="文章")] public string ArticleID { get; set; } [Dis ...

  9. 使用oracle的保留字作为字段名称并进行操作的方法

    项目中调取业主的数据库时发现,其中一个表的一个字段名为:update,所以当我用数据库查询语句进行查询的时候总会出错.从网上查询之后发现原来很简单,只要把update加上双引号就好了,例如: sele ...

  10. C#即时通讯系统设计与实现(一)

    最近学习了一下即时通讯,写了几天了,现在把遇到的问题和得到的心得在这里分享下. 即时通讯,C/S模式,在服务器上架设服务端,服务端是服务形式的,可以设置为开机自启动,客户端进行访问,可以安装在任意一台 ...