前言:ViewState是常用的状态(信息)保持方式,下面和大家分享一下ViewState。
(一)使用方式: 作用域—页面级
保存数据方式:
ViewState["myKey"]="MyData";
读取数据方式:
String myData;
if(ViewState["myKey"]!=null)
{myData=(string)ViewState["myKey"];}
(二)存储的数据类型
ViewState不能存储所有的数据类型,仅支持:String、Integer、Boolean、Array、ArrayList、Hashtable
(三)使用ViewState的前提
页面上必须有一个服务器端窗体标记(<form runat=“server”>)
服务器在接收到用户请求一个页面后,会自动在请求报文中找看是否包含__VIEWSTATE的隐藏域,如果有,则将中间的值解码后添加到页面的ViewState属性中。
服务器在输出的时候,也会自动的将ViewState中的值添加到表单里名叫__VIEWSTATE的隐藏域中。
VIEWSTATE适用于同一个页面在【不关闭】的情况下【多次】与【服务器】交互
跨页面提交的__VIEWSTATE不会被目标页面装入页面的ViewState属性中
【ViewState图】
(四)Aspx里的ViewState
1.查看生成的源代码
查看生成的源代码,ASP.Net将所有隐藏内容统一放到了名字为__VIEWSTATE的隐藏字段中,使用序列化算法将所有隐藏内容放到一个字符串中。点击几次在使ViewStateDecoder这个工具查看ViewState内容,发现了确实将这些改变的内容放到了ViewState中。存储非表单域、非value值的容器。
2.禁用ViewState的方法
(1)禁用【单个控件】的ViewState设定enableviewstate=false,禁用ViewState以后TextBox版本不受影响。
(2)禁用【整个页面】的,在aspx的Page指令区加上EnableViewState=“false” 。内网系统、互联网的后台可以尽情的用ViewState。
(五)ViewState原理:
Input版本(TextBox)自增和Div版本(Label)的不同。
当某些控件的某些属性不属于浏览器表单的提交范围时,fw将会把这些属性添加到ViewState中保存。
WebForm的IsPostBack依赖于ViewState
总结:i+1的基础上,不断重复,不断学习~