[ASP.NET]ViewState

前言: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的基础上,不断重复,不断学习~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值