一、ViewState概述
①ViewState是基于webform的
②在web窗体控件属性处设置runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值。
③页面会在输出时,自动添加下面的隐藏域:
value处的值只是base64编码并不是加密。
④ViewState是一个名称/值的对象集合。
⑤当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端将页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。(恢复现场)
⑥ViewState不能存储所有的数据类型,仅支持:String、Integer、Boolean、Array、ArrayList、Hashtable
二、ViewState原理
①浏览器请求Default.aspx页面。
②在服务器端 发现创建的ViewState 这个时候 会自动创建一个名字叫做__VIEWSTATE(双下滑线 全部是大写)的隐藏域 其隐藏域的值经过base64加密以后返回到浏览器端这一加密过程在页面生命周期的SaveState事件中的SaveAllState方法中完成。
③当浏览器提交表单的时候 将__VIEWSTATE的隐藏域也一起提交到服务端 这个时候 页面生命周期的ReadState事件的ReadAllState方法会将加密后的值反base64解密 最后将值赋值给名字叫做xx的ViewState。
④最后来操作ViewState中的值。
三、使用
1.使用原因
由于http是无记忆无状态的协议。页面传值给服务器,都是通过form表单,且控件自己必须有name属性与value才可以得到值。但是像显示动态信息很多情况下并不都是使用满足上述条件的控件,所以需要将http伪装为有记忆的。而viewstate就是可以事先这个伪装术的策略。
2.使用方法
① 条件与设置
② 实例
aspx.cs文件:
aspx界面(就一个自增按钮):
运行效果:
③ 禁用方法
在默认情况下,所有服务器控件的viewstate开启状态,通过以及几种途径来禁止。
1.页面级别
2.控件级别
3.应用程序级别
4.机器级别
2.控件级别
3.应用程序级别
4.机器级别
页面级别禁止的方法是在页面的开始写入
- spanstyle="font-family:MicrosoftYaHei;"
asp.net 表单 ViewState隐藏域
原文地址:https://www.cnblogs.com/rainbowaab/p/8807374.html
知识推荐
- CentOS 7 安装 .Net Core 2.0 详细步骤
- jQuery鼠标划入划出
- $.ajax() 案例
- js由浅入深理解
- hibernate validator 动态返回国际化提示
- jquery.qrcode.min.js生成二维码
- ngx_http_proxy_module模块
- webpack配置:css文件打包和JS压缩打包
- 3.22 网页
- httpd配置
- 为jquery添加扩展标准思路
- nginx防盗链+访问控制+限制指定目录运行php+解析支持php+现在user_agent
- TinkPHP框架学习-02控制器基本操作
- 日期插件 pikaday.js 的使用
- 关于HTML5显示图片翻转90度的问题
- JS基础整理
- 常用meta设置
- NO--12模拟服务器端请求之node.js
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8
不良信息举报平台
互联网安全管理备案
Copyright 2023 www.wodecom.cn All Rights Reserved