Asp.net总结(一)ViewState
来源:互联网 发布:lua编程入门 编辑:程序博客网 时间:2024/06/07 02:33
看Asp.Net视频时,于老师不断地提ViewState,还把它融合到服务器和客户端的交互过程中去讲,讲来讲去也只是明白了它用来存储页面的信息。稍微在网上一查,就发现介绍ViewState的知识挺多的,而且深浅不一。开始大脑里一篇混沌,整理融合了一下,发现也无非就是3个词的事:What、Why和How。
1.What
在认识ViewState之前有必要理解一下HTTP.
HTTP(HyperText TransferProtocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户端(如Web浏览器)能够从HTTP服务器端(Web服务器)请求信息和服务。HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。
ViewState是一种机制,ASP.NET使用这种机制来跟踪服务器控件状态值,否则这些值将不作为HTTP窗体的一部分而回传。例如,由Label控件显示的文本默认情况下就保存在ViewState中。作为开发人员,可以绑定数据,或在首次加载该页面时仅对Label编程设置一次,在后续的回传中,该标签文本将自动从ViewState中重新填充。因此,除了可以减少烦琐的工作和代码外,ViewState通常还可以减少访问数据库的往返次数。
2.How
ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制.在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE._VIEWSTATE中存放了所有控件在ViewState中的状态值.ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能.它的类型是system.Web.UI.StateBag,一个名称/值的对象集合.当请求某个页面时,ASP.NET把所有控件的状态格式化成一个base64编码字符串,然后做为窗体的隐藏属性送到客户端.当客户端把页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值.当然这些全部是由ASP.NET负责的.
结合服务器和客户端的交互过程看图:
在使用ViewState的时候需要有一下几点注意:
1.当存在页面回传时,不需要维持控件的值就要把ViewState禁止.
2.ViewState的索引是大小写敏感的.
3.ViewState不是跨页面的.
4.为了能保存在ViewState中,对象必须是可流化或者定义了TypeConverter.
5.控件TextBox的TextMode属性设置为Password时,它的状态将不会被保存在ViewState中,这应该是出于安全性的考虑.
6.当禁止一个程序的ViewState时,这个程序的所有页面的ViewState也被禁止了.
7.viewstate并不是能存储所有的.net类型数据,它仅仅支持String、Integer、Boolean、Array、ArrayList、Hashtable
以及自定义的一些类型.
Asp.Net中有很多的状态保存机制,除了ViewSate外,还有session、cookie等等,有必要对比一下他们的异同点。
- Asp.net总结(一)ViewState
- asp.net 视图(viewState)的优缺点
- ASP.NET中的ViewState
- ASP.NET ViewState 初探
- ASP.NET中的ViewState
- ASP.NET ViewState 初探
- ASP.NET ViewState 初探
- ASP.NET ViewState
- ASP.NET ViewState 初探
- ASP.NET中的ViewState
- ASP.NET ViewState 初探
- ASP.NET ViewState初探
- ASP.NET ViewState 初探
- ASP.NET ViewState 初探
- ASP.NET ViewState 初探
- ASP.NET ViewState 初探
- ASP.NET ViewState初探
- ASP.NET ViewState
- leetcode JAVA Populating Next Right Pointers in Each Node 难度系数3 3.41
- 用O(lgn)时间求出两个已排序数组的中位数
- GetOrdValue
- WPF DataGrid
- leetcode JAVA Triangle 难度系数3 3.42
- Asp.net总结(一)ViewState
- VS13下遇到的编译错误:cl.exe exited with code 2
- IO高级编程——获取特定位置上的数据(lseek函数的使用)
- 利用NSBundle加载资源文件
- IIS 用户账号配置出错导致网站访问需要登陆账号或者拒绝访问
- hud1116
- VB.NET实现关机和重新启动
- Delphi 和 VC、C++ 數據類型對應關係
- 【20140205】曼昆著《经济学原理》读书笔记