浅谈ViewState[通俗易懂]

浅谈ViewState[通俗易懂]一、什么是ViewState二、使用

大家好,又见面了,我是你们的朋友全栈君。

一、ViewState概述

ViewState是基于webform的


② 在web窗体控件属性处设置runat = “server”,这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值。


③ 页面会在输出时,自动添加下面的隐藏域:

浅谈ViewState[通俗易懂]

value处的值只是base64编码并不是加密。

④ ViewState是一个名称/值的对象集合。


⑤ 当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端将页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。(恢复现场)


⑥ ViewState不能存储所有的数据类型,仅支持:String、Integer、Boolean、Array、ArrayList、Hashtable

二、ViewState原理

浅谈ViewState[通俗易懂]

① 浏览器请求Default.aspx页面。

② 在服务器端 发现创建的ViewState 这个时候 会自动创建一个名字叫做__VIEWSTATE(双下滑线 全部是大写)的隐藏域 其隐藏域的值经过base64加密以后返回到浏览器端这一加密过程在页面生命周期的SaveState事件中的SaveAllState方法中完成。

③ 当浏览器提交表单的时候 将__VIEWSTATE的隐藏域也一起提交到服务端 这个时候 页面生命周期的ReadState事件的ReadAllState方法会将加密后的值反base64解密 最后将值赋值给名字叫做xx的ViewState。

④ 最后来操作ViewState中的值。


三、使用

1.使用原因

由于http是无记忆无状态的协议。页面传值给服务器,都是通过form表单,且控件自己必须有name属性与value才可以得到值。但是像显示动态信息很多情况下并不都是使用满足上述条件的控件,所以需要将http伪装为有记忆的。而viewstate就是可以事先这个伪装术的策略。

2.使用方法

① 条件与设置
浅谈ViewState[通俗易懂]

② 实例
aspx.cs文件:
浅谈ViewState[通俗易懂]



aspx界面(就一个自增按钮):
浅谈ViewState[通俗易懂]



运行效果:
浅谈ViewState[通俗易懂]

③ 禁用方法

在默认情况下,所有服务器控件的viewstate开启状态,通过以及几种途径来禁止。
1.页面级别
2.控件级别
3.应用程序级别
4.机器级别

页面级别禁止的方法是在页面的开始写入

<span style="font-family:Microsoft YaHei;"> <% @ Page EnableViewState  = " False "   %>  
or 
 <% @ Page EnableViewState  = " True "   %></span>

浅谈ViewState[通俗易懂]

控件级别是

<span style="font-family:Microsoft YaHei;"> < asp:TextBox id = " txtCode "  runat = " server” EnableViewState= " false "  /> 
 or
 < asp:TextBox id = " txtCode "  runat = " server "  EnableViewState = " true "   /></span>


也可以直接在控件处修改
浅谈ViewState[通俗易懂]


程序级别是在web.config中
浅谈ViewState[通俗易懂]

<span style="font-family:Microsoft YaHei;">< pages enableViewState = " false "   /> 
or
 < pages enableViewState = " true "   />
</span>


机器级别是在machine.config中
浅谈ViewState[通俗易懂]

<span style="font-family:Microsoft YaHei;"> < pages enableViewState = " true "  enableViewStateMac = " true "  ...  /> 
or
 < pages enableViewState = " false "  ...  /> </span>



四、补充

1.回忆与直接写值不同

如果将ViewState禁用后,还是可以在服务器端给控件text赋值的。但是不可回忆(不可还原现场)。通过下面这个实例来感受下。

aspx.cs文件:

浅谈ViewState[通俗易懂]


界面:

一个label和一个按钮


运行效果:

浅谈ViewState[通俗易懂]


2.读取viewstate中的值都是开始键值对捆绑设定好的。如果改键未设定值时,读出来的是空。

对上面使用中介绍的ViewState进行一点改进。

aspx.cs文件:

浅谈ViewState[通俗易懂]

界面:

同上

运行效果:

浅谈ViewState[通俗易懂]



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162432.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vscode关闭flake8格式检查

    vscode关闭flake8格式检查用vscode写python时,安装了flake8检查格式,结果一片红且用yapf格式化后还有一堆红色的格式问题提示,如下图:尝试在preference的extension中关闭插件,发现找不到对应插件,最后在settings.json中更改以下两个值:”python.linting.pylintEnabled”:true,”python.linting.flake8Enabled”:false,一片红消失,快乐ps:一键格式化使用alt+shift+F(yapf)即可…

  • MySQL字符串截取_mysql删除字符串后的字符

    MySQL字符串截取_mysql删除字符串后的字符先给你们看看表数据is_type:0不推荐|1首页广告推荐 | 2 商品页广告推荐 | 3 列表页广告推荐 4:购物车广告推荐sort_num:0,0,0,0  第一个对呀1   |    第二个对应2   |  第三个对应3 | 第四个对呀4id   name     is_type     sort_num     is_show

  • jxl.jar下载

    jxl.jar下载jxl.jar给java提供了简单操作Excel的方法:链接:https://pan.baidu.com/s/17HXj_w8E2nM8iIssf2Bmhg提取码:l6t5

  • 局域网城域网广域网和互联网的区别_局域网的互联设备有哪些

    局域网城域网广域网和互联网的区别_局域网的互联设备有哪些网络按照其所覆盖的地区范围分为以下四类(简要介绍): 1.局域网2.城域网3.广域网4.互联网  一.局域网 当一个单位需要将位于某个范围有限,行政可控的区域内的大量联网设备通过一种高速的方式相互连接起来,就需要通过组建一个局域网让这些设备实现相互通信(范围有限可以是一所高校,一个餐厅,一个家庭等) 局域网具有以下特点1.范围有限2.行政可控3.速率高4.安全性高 …

    2022年10月10日
  • 国内常用NTP服务器地址及IP(阿里云时间服务器)

    国内常用NTP服务器地址及IP(阿里云时间服务器)210.72.145.44(国家授时中心服务器IP地址)133.100.11.8日本福冈大学time-a.nist.gov129.6.15.28NIST,Gaithersburg,Marylandtime-b.nist.gov129.6.15.29NIST,Gaithersburg,Marylandtime-a.timefreq.bldrdoc.gov132.

  • 锂电池升压芯片[通俗易懂]

    锂电池升压芯片[通俗易懂]型号电池 数量工作 模式工作 电压最大 充电 电流工作 电流恒流 恒压 精度输出 电压开关 频率封装说明HM40331-5 节 可设PFM 升压型 开关式 外置MOS4.0V -28V扩流 最大 25W1.7mA1%可调1MHzSOT-26HM40312节5V升压型 开关式 外置MOS最大 5.5V1.0A 以上 可调5mA1%8.4V200KHzSOP-8自适应适配器的

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号