今天看了一篇关于“Asp.net 页生命周期”的文章,有这样一句话:果您要开发自定义控件,就必须熟悉页生命周期,以便正确进行控件初始化,使用视图状态数据填充控件属性以及运行任何控件行为代码。问题一:什么是视图数据“ViewState”???问题二:在绑定控件,比如绑定DrowpdownList,CheckBoxList控件时,要把查询出的数据用“ViewState”进行存储。这样做有什么好处,存储的数据怎样再次使用呢???问题三:视图数据“ViewState”怎样使用???它不是非常消耗资源吗,怎么还利用它来存储要绑定到控件的数据???问题四:视图数据“ViewState”保存在本地,这不是和“Cookies”相似吗?他们之间有什么差别嘞???
解决方案 »
- 怎样在mvc中创建一个web服务?
- asp 无限循环和递归了,什么原因呢?????
- 电子商城数据库设计
- 很急!!关于菜单用户控件,在同一个页面中能同时使用两个相同的控件吗?
- iframe 问题
- 类型转换问题,请教大家
- xmlHttpRequest怎么返回一个数组啊,我这样还需要正则表达式
- StringBuilder builder = new StringBuilder(); Using 怎么写?
- 在服务器端调用Excel生成Excel文件,最后不能关闭Excel进程。
- 很有挑战性的一个问题:关于.net与IIS的配合认证
- 上下文中不允许使用 '@columnid'。此处只允许使用常量、表达式或变量。不允许使用列名???
- 问个关于AjaxControlToolkit的问题。
跟踪那些ViewState中出现改变的值,以便对这些脏数据(dirty)进行进一步的处理;
通过序列化将ViewState中的值保存在页面的隐藏域(Hidden Field)中(这是默认的持久化方式),并通过反序列化得到对应的ViewState对象以便进行相应的操作;
在页面回传的过程中自动的存储ViewState中的跟踪的值。 参考看完你就清晰了
http://msdn.microsoft.com/zh-cn/library/bb386448.aspxViewState是通过 隐藏表单进行传递的
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/ddddddxxxxxx/">要把查询出的数据用“ViewState”进行存储?
存不存是根据页面的需要进行的,一般是不存的用它来存储要绑定到控件的数据,有时候是传递参数的需要,比如传递CommandArgument必须启用视图才可以Cookies有点小限制。ViewState存储的内容更多为了提高性能,尽量少用或者不用 ViewState
具体服务器端怎么解析的,是asp.net的那个dll做的。
但是,我要说的是,你怎么看恐怕都无法真正明白,因为很多东西需要了解到原理,,你去看一下HTTP协议,就会明白,HTTP是无状态的,它根本分不清哪个页面是新页面,哪个页面是回传页面,,为了维系值不丢失(可能你又不明白了,没事,可以知道我问明白 )微软无比牛X发明视图状体这个东西,然后你看完我这个,在看楼上几位的可能会明白些
ViewState 中保存着代码中改变的控件属性,通过代码绑定到控件的任何数据,以及由用户操作触发,回发的任何更改。
ViewState 还提供了一个状态包(StateBag), 这是一个特殊的集合或字典(collection or dictionary), 可以用来保存,通过一个 key 来恢复任意的对象或者值。