• ViewState学习


    大多数ASP.NET 服务器控件存储其属性值得方式是通过ViewState的方式存储的。
    StateBag还具有对其中数据更改的跟踪过程(Tracking ability)。是否进行跟踪的开关可以被设置成开或者关,当调用StateBag.TrackViewState()方法后跟踪开关将被开启。
    如果是默认的方式,那么VIewState中的值会被序列化成一个基于Base64编码的字符串,然后存储在页面 中一个叫做_ViewState的隐藏变量中。
    首先页面回传以后,整个Page将重新生成并且那些页面上声明的静态控件也都已经被解析添加到 以Page为根节点的控件树中,那些静态控件对应的静态声明的属性值也都被初始化。然后是OnInit阶段,在这个阶段ASP.NET会调用 TrackViewState方法,从此以后所有对控件属性的赋值操作都将导致被跟踪。接着就LoadViewState()方法被调用,这里那些从_ViewState中反序列化出来的值将被重新赋给对应的控件,由于在此之前TrackViewState()已经被调用了,_ViewState中包 含的数据对应的属性值都会被标记为Dirty。这样当调用SaveViewState的时候,这些属性值还是会被持久的保留到_ViewState中,这 样在页面的一次次回传和页面一次次的重新建立的过程中,这些控件的值就被保留下来了。
    ASP.NET视图状态的第一个规则是,只有在你拥有其值是通过代码动态生成的部件的时候,才能实现视图状态效果。如果在*.aspx文件的<form>标签内硬编码值,这些项的状态总是通过回传来保存。即使通过给页面设定禁用视图。

    我在Repeater里面使用了一个没有被绑定的TextBox.没有对它进行数据绑定,所以如果给Repeater指定数据源绑定之后,Textbox原来的值就会消失。好像不存在ViewState一样,需要自己另外保存。

  • 相关阅读:
    2018 Wannafly summer camp Day2--New Game!
    2018 Wannafly summer camp Day8--区间权值
    2018 Wannafly summer camp Day3--Shopping
    2018 Wannafly summer camp Day3--Travel
    HDU 6354--Everything Has Changed(判断两圆关系+弧长计算)
    Spring boot-(2) Spring Boot使用
    Spring boot-(1) Spring Boot快速开始
    Quartz使用(5)
    Quartz使用(4)
    Quartz使用(3)
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/1767458.html
Copyright © 2020-2023  润新知