ASP.NET中的ViewState
2006-08-25 21:36
447 查看
updated on 2007/07/19
什么是ViewState,它起到了什么作用呢?简单的讲,ViewState维持了Web Page的UI状态。
在ASP.NET诞生之前,要保持住同一个web页面回传后(假设不跳转到其它页面)里面各个html元素的值,需要程序员自己显示得做一些工作,将各个html元素的值显示得赋值。而ASP.NET却能自动得做这些繁杂的工作。这些都要归功于ViewState,那么ViewState具体是怎么工作的呢?
其实也没什么,仔细研究一下就会发现,原来ASP.NET自己管理着一个隐藏html元素: <input type="hidden" name="__VIEWSTATE">。当执行一个asp.net页面时,这个页面的ViewState值以及所有控件的ViewState值将被编码成一个String串赋值给上述的隐藏元素,作为html的一部分发给客户端浏览器。当客户端提交页面后,这个ViewState串(有可能会在客户端改变)又会重新传回,在服务器端,ASP.NET分析处理这个ViewState串,以重新取代各个控件的值,从而会“智能”得将客户端的操作元素值“记”下来。
当然ASP.NET也给我们工程师留出来一个接口来改变某个控件的ViewState值,或根据需要自己可以存入一个ViewState,例如:
ViewState["SortField"] = value;
ViewState和Session的区别是:
在以下几种情况中可以不使用ViewState:
推荐两篇关于ViewState的技术文章:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspnet/html/asp11222001.asp
http://msdn.microsoft.com/msdnmag/issues/03/02/CuttingEdge/
和著名博客
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx
另外本人做了一个关于asp.net状态管理机制的ppt,可以从这里下载查看
什么是ViewState,它起到了什么作用呢?简单的讲,ViewState维持了Web Page的UI状态。
在ASP.NET诞生之前,要保持住同一个web页面回传后(假设不跳转到其它页面)里面各个html元素的值,需要程序员自己显示得做一些工作,将各个html元素的值显示得赋值。而ASP.NET却能自动得做这些繁杂的工作。这些都要归功于ViewState,那么ViewState具体是怎么工作的呢?
其实也没什么,仔细研究一下就会发现,原来ASP.NET自己管理着一个隐藏html元素: <input type="hidden" name="__VIEWSTATE">。当执行一个asp.net页面时,这个页面的ViewState值以及所有控件的ViewState值将被编码成一个String串赋值给上述的隐藏元素,作为html的一部分发给客户端浏览器。当客户端提交页面后,这个ViewState串(有可能会在客户端改变)又会重新传回,在服务器端,ASP.NET分析处理这个ViewState串,以重新取代各个控件的值,从而会“智能”得将客户端的操作元素值“记”下来。
当然ASP.NET也给我们工程师留出来一个接口来改变某个控件的ViewState值,或根据需要自己可以存入一个ViewState,例如:
ViewState["SortField"] = value;
ViewState和Session的区别是:
Session State | ViewState | |
---|---|---|
是否占用Server资源 | 是 | 否 |
是否超时 | 是 – 默认20分钟 | 否 |
是否存储所有的.NET类型 | 是 | 否,只限于: strings, integers, Booleans, arrays, ArrayList, hashtable, custom TypeConverters |
是否增加html的传输量 | 否 | 是 |
Web Pages | Controls |
---|---|
Web页面不需要回传 | 不需要处理某个控件的事件 控件没有需要动态设定的属性或动态绑定数据的属性 |
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspnet/html/asp11222001.asp
http://msdn.microsoft.com/msdnmag/issues/03/02/CuttingEdge/
和著名博客
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx
另外本人做了一个关于asp.net状态管理机制的ppt,可以从这里下载查看
相关文章推荐
- 压缩ASP.NET中的ViewState的改进方法
- ASP.NET ViewState 初探
- [翻译]asp.net 2.0中通过压缩ViewState改善性能
- ASP.Net中控件的EnableViewState属性
- ASP.NET ViewState 初探 (2) 转自msdn
- ASP.Net ViewState的实现
- ASP.NET中控件的EnableViewState属性及彻底禁用
- ASP.Net ViewState的实现
- 【转】ASP.NET ViewState详解
- 真正理解ASP.NET的ViewState (Truly Understanding ViewState) 译文
- Asp.net 基础6(自定义控件之ViewState)
- 用 ASP.NET 2.0 改进的 ViewState 加快网站速度
- ASP.NET ViewState 初探
- 用 ASP.NET 2.0 改进的 ViewState 加快网站速度
- 用 ASP.NET 2.0 改进的 ViewState 加快网站速度
- 用ASP.NET 2.0改进的ViewState加快网站速度
- asp.net中viewState的应用
- 压缩ASP.NET中的ViewState的超强改进方法
- [转]Troubleshooting the "View state is invalid" error with ASP.NET
- ASP.NET的Application、Session、Cookie、ViewState和Cache等变量的区别是什么?