ViewSate理解、禁用

10 篇文章 0 订阅

ViewSate字面意思,页面状态、视图状态。

ViewState特点

1、ViewState是WebForm的特性。

2、ViewState是页面级的,即只能在当前页面中操作,不能跨页面。

3、ViewState的内容都是在html页面上存储的,存储在id、name都是“__VIEWSTATE”、type是“hidden”的input中,如下

ViewSate添加:

ViewState["a"] = "a";
ViewState["b"] = "b";
ViewState["c"] = "c";
ViewState["d"] = "d";

ViewSate在html页面中的显示形式:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE0MTM1MTM2MTQPFggeAWEFAWEeAWIFAWIeAWMFAWMeAWQFAWRkZF3A5jIU2X1vFKRERWz7f/bApxoy" />

4、只有aspx页面的form中有runat="server"时,最终呈现的html页面上才会存在id为"__VIEWSTATE"的input,此时,在.cs文件中任然可以使用ViewSate,但是此时的ViewSate只能实现类似全局变量的功能。

5、ViewState中的内容对用户是可见的,可以使用ViewSate查看器(ViewSateDecoder)解析出里边的内容,上面的内容解析如下:

IndexedString是键,String是值,所以,一些敏感的信息不建议存储在ViewSate中。

ViewState使用过程

请求aspx页面时,如果aspx页面的form中有runat="server",会在页面上添加id为"__VIEWSTATE"的隐藏的input,并将ViewState中的内容进行序列化、Base64编码后存储在这个input中,之后在页面页面回传的时候,ViewState的内容作为表单中的一项回传到服务端,服务端得到数据后进行Base64解码,得到本次页面回传前一次的ViewSate数据。所以只有在页面回传的过程中,ViewState才有意义,页面中没有页面回传操作,ViewState的作用不大。

ViewState禁用

ViewState的主要作用是维护WebForm中服务器控件的状态,而现在越来越注重页面大小、整洁度的情况下,服务器控件基本上已经是过去式了,各网站也都在去服务器控件,因此为了压缩页面大小,通常都会禁用ViewState。禁用后html页面中仍然存在"__VIEWSTATE",但是内容很短,此时在.cs中的ViewSate仍然能使用,但是ViewSate只能实现类似全局变量的功能。

页面级禁用,在页面顶部添加EnableViewState="false"

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" CodeFile="Test.aspx.cs" Inherits="Test" %>

项目中禁用,在WebConfig的system.web中添加

<pages enableViewState="false" />

其他

服务器控件Button按钮点击后 ,实际上执行的是页面回传的操作,此时Page_Load方法先执行,OnClick方法后执行。

页面第一次加载:输入页面地址打开页面的过程是第一次加载。

页面回传:点击html页面上submit按钮触发的表单提交,如服务器控件的OnClick事件。

PS:在前端技术越来越成熟的情况下,ViewSate基本上是过去式了

附上两个在2008年讨论ViewState的帖子

https://bbs.csdn.net/topics/230052606

https://bbs.csdn.net/topics/230063194

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值