viewstate的用法

asp.net viewState 那么,有了这个隐藏域,页面里其他所有的控件的状态,包括页面本身的一些状态都会保存到这个控件值里面. 每次页面提交时一起提交到后台,asp.net对其中的值进行解码,然后输出时再根据这个值来恢复各个控件的状态. 我们再看这个控件的value值,它可能类似如下的形式:Oz4+O2w8aTwxPjs+O2w8…当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端吧页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。......... 阅读详情
最近看赵老师博客的时候,看到一个概念,赵老师在使用asp.net的时候都是先把整个项目的viewstate禁用掉,以减少页面的载重,提高网页的访问速度。然后我又浏览了一些当地的用asp.net做的网站,发现他们做的网页的viewstate都在100k左右,整个网站的速度就不言而喻了。但是我对这个概念不是很清晰,于是认真的研究了一下。
声明:由于本文是在网上g的,出处忘了,所以如有冒犯,还请与我联系。
        ViewState是ASP.NET的一个独创设计。它为用户在进行Web开发时带来了极大的便利,特别是对于一个WEB开发新手来说,它完全可以不用自己去维护WEB控件的状态,在进行事件驱动开发时,用户只管通过控件ID来获取当前控件的值,而其它的细节ASP.NET都是对用户透明的,所以非常易于入门。而它所带的负面影响也是明显,有时候也是而严重的,最严重的就如上的那篇回发事件执行很慢,甚至时常出现“Validation of viewstate MAC failed”你也不会感到意外。 
   
      那么我们该如何来控制和使用ViewState呢?我想最好还是禁用它,但是也不绝对是这样的。你可以根据你的应用来决定是否禁用ViewState,那么决定因素有哪些呢? 
   
      1)你的生产环境,也就是说你是在哪里使用的。如果你的是在局域网内部,或是光纤到桌面(也不用光纤,速度有保证就行,这里只是一个比喻)。那么你可以放心使用ViewState。 
   
      2)你对Web开发的理解程度。这是主观因素,如果你对禁用ViewState有足够的控制能力,那么你可以放心的在web.config全局禁用ViewState。 
   
      3)如果你主观上能够接受ViewState,你希望能充分利用它给我们带来的便利。并且你可以很好的控制ViewState,不让它成为你的性能瓶颈。 
   
      4)你的应用场合,比如你如果是网站前台的话,那请尽量禁用ViewState。(当然也最好不要使用PostBack) 
   
      可能还有其它的原因来决定你是否使用ViewState。这里我们还是希望能够来总结一下ViewState带给我方便的同时,它都带了什么副产品给我们了: 
   
      1)最直观的就是页面体积。使用了ViewState,它会维护所有的控件的状态,在进行PostBack的时候,会适时的进行控件状态的还原。这是什么概念呢?就是控件的值(例如DropdownList里面的所有选项)除了通过HTML的方式显示给用户外,它同时在ViewState中还有一个备份,这个备份会以一个隐含变量的方式存在服务器发送的HTML代码中,同时在PostBack时会把这些ViewState再传回给服务器端。无形中增加了一倍以上的页面体积。 
   
      2)增加了体积了,自然就增加了网络传输。当然页面的反应速度就下降了。 
   
      3)在服务器端增加了一些额外的处理时间。ViewState增加了体积,那么对这些ViewState值的序列化和反序列化的发的时间也是不可小视的。另外,在还原控件状态时,需要对控件进行的遍历和赋值,这个时间也应该算是一个比较大的开销。 
   
      禁用ViewState,解决了一些问题。但是做为WebForm生命周期的一部分,那个ViewState处理函数还是需要被调用的,只是它们在判断EnableViewState==false以后,所做的事情就比较少了,也就节省时间了。如果你仔细查看一下禁用ViewState的页面,你还会发现有隐含变量__VIEWSTATE。如果你想让这个隐含变量也消失,那么你可以重写Page类的PageStatePersister,来达到这个目的。但是据我的经验,这样做以后好像会有一些其它影响,所以这里建议你尽量不要这样做(其实也没必要这么做)。 
   
      那么禁用了ViewState,是不是说我们就无法利用ViewState给我带来方便了?绝对不是这样的,正因为我们禁用了ViewState,那么我们就可以开始“滥用”ViewState了。因为有些情况下,我们需要在相同页面的不同的控件中使用一些相同的值。比如,你在查询完数据后,总页数也要在相同页面中的一些在其它控件里使用。这时因为不同控件不在同一个类中,无法使用变量传递,如果你放在缓存和Session中,那么冲突和过期时间就不是你所控制的了。这时我们就可以把它给存放在ViewState,因为ViewState的作用域仅限本页本次请求,页面输出后就随着页面实例而回收了。而因为我们禁用了ViewState了,这时我们在ViewState存的值并不会被序列化到客户端去。这样的“滥用”反而却会给我们的开发带来非常大的方便和灵活。 
双脉冲测试中IGBT驱动电阻和驱动电容的研究   在LTspice中没有双脉冲波形发生器,要做一个双脉冲的波形只能用电压源来进行特殊设置,不是很方便,为此我写了一个双脉冲波形发生器,有需要的可以下载。双脉冲波形发生器。   如下,该元器件可以自定义延迟时间Td,第一个脉冲宽度T1,第二个脉冲宽度T3,两个脉冲间隔T2,脉冲循环个数Ncycle以及高低电平Vhigh,Vlow。       IGBT开通时Rg的影响: 如果增大Rg: ①开通延... 阅读详情

相关推荐

微信聊天记录解密,必须是root的手机

手机上安装x-plore软件,将/data/data目录的相关EnMicroMsg.db auth_info_key_prefs.xml拷贝到/storge/emulated/0目录后才可以拷贝到电脑。路径:/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml。但是是加密过的 需要解密 解密密码生成规则是手机IMEI+微信UIN md5(32位小写)后的前7位。安卓手机要root测试版本微信要7或者8版本都可以。选择message表。

venus60的专栏 1005

浅谈ViewState

一、什么是ViewState 二、使用

我在等那么一天的博客 1万+

Zemax 中的 LED 阵列模型

这些光线是所有光线的子集,用于布局可视化,而不是详细分析。X 和 Y 散度(αx 和 αy)以度为单位,以不同的方式设置为 6 度和 12 度。每个 LED 都以朗伯模式(广角分布)发光,尽管有些 LED 具有内置光学元件,用于更窄或更聚焦的光束。,具体取决于这些类别中使用的半导体材料。LED 阵列由多个发光二极管 (LED) 组成,这些二极管以特定模式或配置排列,以实现均匀照明、更高强度或特定照明特性。如果数据的存在更改为“辐射强度”,则它以弧度为单位显示每个立体角的功率,作为探测器上入射角的函数。

jkh920184196的博客 1595

未加密的__VIEWSTATE参数(中危)

复现危害较低的漏洞:未加密的__VIEWSTATE参数

qq_44828901的博客 7319

SeetaFace6人脸活体检测C++代码实现Demo

活体检测是判断人脸图像是来自真人还是来自攻击假体(照片、视频等)的方法。 人脸识别系统存在被伪造攻击的风险。因此需要在人脸识别系统中加入活体检测,验证用户是否为真实活体本人操作,以防止照片、视频、以及三维模型的入侵,从而帮助用户甄别欺诈行为,保障用户的利益。

mickey2007的博客 3470

第 1 章 Prometheus 监控 | Prometheus 入门

了解 Prometheus 监控系统,学会安装及了解页面功能。

甘蓝的专栏 486

.net 中viewstate的原理和使用

ASP.NET中的ViewState ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值。 ViewState是类Control中的一个域,其他所有控...

Curtain的博客 4047

PCL 直通滤波器【2026最新版】

PCL直通滤波器函数详解以及用于多字段滤波、强度滤波、获取某一时间范围内的点等高阶用法案例分享。博客长期更新,本文最近一次更新时间为:2026年3月11日。

点云侠的博客 40万+

详述ViewState用法

与刚接触ASP.NET页面的开发人员交谈时,他们通常向我提出的第一个问题就是:“那个ViewState到底是什么?”他们的语气中流露出的那种感觉,就象我来到一家异国情调的餐馆,侍者端上一道我从未见过的菜肴时的那种感觉-既疑惑不解,又充满好奇。但肯定有人认为它不错,否则就不会提供了。所以,我会先尝一尝,或许会喜欢上它,尽管它看上去的确很古怪! 对于ViewState也是如此,但是如果适应了它的风格,...

qq_43062962的博客 1280

不会精准对比前人研究写“讨论与对比”段落?教你用ChatGPT辅助,直接让这部分提升一个档次(附提示词指令)

一个我觉得很有效的做法是,选取几篇具有代表性的文献,从研究方法、变量设置或结论方面进行对照分析,并指出本研究在哪些方面进行了补充或修正。除了简单说“提出了新的方法”或“首次应用某模型”,更需要说明这一做法在结果解读、研究设计或理论拓展上的具体意义,最好能够与现有研究进行比较,形成明确的差异化描述。段落应包含:研究结果解释、与前人研究对比、研究贡献、局限性反思,并在结尾提出未来研究的可能方向。讨论与对比部分一般位于文献综述、研究讨论或结果分析的后面,目的是对比已有研究,突出自己研究的价值与新意。

智能AI让学术科研更容易 171

[xboard-real6410]39 real6410中的BL1和BL2实验及流程分析

文章目录uboot控制uboot 流程uboot加载kernel uboot控制 uboot 流程 uboot加载kernel

鹰之翔 298

ViewState的用法

学习标签:ViewState 本文导读:在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值。ViewState是一个名称/值的对象集合。当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端吧页面回...

dianyi7318的博客 220

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Session,ViewState 用法

<br />Session,ViewState用法<br />基本理论:<br />session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到viewstate里面. 而sesson则只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上. 另外,session在默认情况下20分钟就过期,而viewstate则永远不会过期. 

fxhflower的专栏 606

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Asp.net中的ViewState用法

Session,ViewState用法基本理论:session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到viewstate里面. 而sesson则只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上. 另外,se...

技术资料收集站 956

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

session、ViewState的用法

1、Session 是保存在服务器内存上的,大量的session,会造成服务器负担加重;ViewState是将数据存入页面隐藏控件中,不占用服务器资源。     2、所以,我们可以将需要服务器“记住”的变量和对象保存到ViewState里面。而Session则只应该用在需要跨页面且与每个访问用户相关的变量和对象存储上。     3、Session在默认情况下20分钟就过期,而ViewState

zpp19901988的专栏 481

Session,ViewState用法

Session,ViewState用法基本理论: session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到viewstate里面. 而sesson则只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上. 另外,s...

weixin_34159110的博客 74

asp.net中ViewState对象的用法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34212189的博客 138

Viewstate 的用法

1.做了开发这么久,居然不知道Viewstate是怎么用的!真悲剧…… Viewstate主要是用来保留页面数据的。下面是某一种情况的用法。 private string MCategory { set { ViewState["MCategory"] = value;...

weixin_34023863的博客 193

WebForm内置对象:Application和ViewState、Repeater的Command用法

一、内置对象 1、Application 存贮在服务器端,占用服务器内存生命周期:永久 所有人访问的都是这一个对象 传值:传的是object类型可以传对象。 string s =TextBox1.Text; Application["aaa"]=s; 取值: if(Application["aaa"]!=null) { Label1.Text=Application[...

dida5235的博客 229
上一篇: updatepanel的updateMode属性
下一篇: ViewState及其与Session的关系
junboyboy
博客等级 码龄15年 12粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值