ViewState(页面级)
l两种使用方式: 作用域---页面级
1.用户数据保存方式:
ViewState["myKey"]="MyData";
读取数据方式:
string myData;
if(ViewState["myKey"]!=null)
{ myData=(string)ViewState["myKey"]; }
注意:ViewState不能存储所有的数据类型,仅支持可序列化对象。
2.非单值服务器控件的状态也自动保存在ViewState中
列入:下拉框。(文本框是单值控件,所以不会保存在ViewState中)
l使用ViewState的前提:
页面上必须有一个服务器端窗体标记(<form runat=“server”>)
《
服务器在接收到用户请求一个页面后,会自动在请求报文中找看是否包含__VIEWSTATE的隐藏
域,如果有,则将中间的值解码后添加到页面的ViewState属性中。
服务器在输出的时候,也会自动的将ViewState中的值添加到表单里名叫__VIEWSTATE的隐藏域中
lVIEWSTATE适用于同一个页面在不关闭的情况下多次与服务器交互
》
这种方法的问题:
缺点:加大网站的流量、降低访问速度、机密数据放到表单中会有数据欺骗等安全性问题。故事:自行打印存折,因为余额不是写到存折这个隐藏字段中的,唯一的关联就是卡号。要把机密数据放到服务器,并且区别不同的访问者的私密区域,那么就要一个唯一的标识。
跨页面提交的__VIEWSTATE不会被目标页面装入页面的ViewState属性中
查看生成的源代码,ASP.Net将所有隐藏内容统一放到了名字为__VIEWSTATE的隐藏字段(必须是name=__VIEWSTATE)中,使用序列化算法将所有隐藏内容放到一个字符串中。点击几次在使用ViewStateDecoder这个工具查看ViewState内容,发现了确实将这些改变的内容放到了ViewState中。存储非表单域、非value值的容器。
浙公网安备 33010602011771号