[转载]ViewState使用小结
ViewState是.Net中提出的状态保存的一种新途径,web程序保存状态的方式有这样几种:
1、Application:保存在Application中的数据是全局有效的;Application里面存放的
应该是访问较多,修改较少并且是全局至少大部分功能会使用的数据,例如计数器或者数
据库连接串等。
Application.Lock();
((int)Application["Count"])++;
Application.Unlock();
2、Session 在Asp.Net内部,有一个StateApplication来管理Session,
3、Cookie
4、ViewState
实际上ViewState并不神秘,就是一个Hidden字段,但是它是服务器控件状态保存的基础
;
如:
<form name="form1" method="post" action="modi_user_info.aspx"
language="javascript" onsubmit="javascript:return WebForm_OnSubmit();"
id="form1">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value=""
/>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKLTIzODM0NzQ5OQ9kFgICAQ9kFgRmDw8WAh4EVGV4dAUHamFzbWluZWRkAgg
PDxYCHwAFDDA1OTEwMDAwMDYxM2RkZA==" />
做过Web程序的人可能都有这种痛苦的体会,有时候为了处理页面上面比较复杂的功能,
常常会加很多Hidden,然后在服务器端用一大堆判断来分析目前的状态,写起来烦人,
写完了代码更是难看;实际上,ViewState就是帮我们系统的实现了保存控件状态的功能
,服务器端控件能够在多次请求间保存状态也全靠它。
1、ViewState是存放在客户端,因此会减轻服务器的负担,是一种比较好的保存数据的
方式。
2、因为ViewState本身的限制,只能保存可以序列化的对象,而且最好不要放太多东
西,能省则省,以免在减慢传输的速度,以及加重服务器解析的负担。
3、我们通过很简单的方式就可以把ViewState里面的值获取出来,我们上面讨论了一
些,虽然没有把解析的代码写出来,但是利用LosFormatter可以得到ViewState反序列
化后的对象,那么要解析出来简直是易如反掌;所以ViewState在安全性上面还是比较差
,建议不要
存放比较机密和敏感的信息,尽管ViewState可以加密,但是由于ViewState要保存在客
户端,天生就有安全性的隐患。
[C#]
// 保存在 ViewState 中
ViewState["SortOrder"] = "DESC"; 字串5
// 从 ViewState 中读取
string sortOrder = (string)ViewState["SortOrder"];
如果要使用 ViewState,则在 ASPX 页面中必须有一个服务器端窗体标记 (<form
runat=server>)。窗体字段是必需的,这样包含 ViewState 信息的隐藏字段才能回传
给服务器。而且,该窗体还必须是服务器端的窗体,这样在服务器上执行该页面
时,ASP.NET 页面框架才能添加隐藏的字段。
在页面不回传的情况下,可以通过省略服务器端的 <form> 标记来去除页面中的
ViewState。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xidor/archive/2008/01/05/2027273.aspx
[转载]ViewState使用小结的更多相关文章
- <转载> GIT 操作小结 http://www.cnblogs.com/-ding/p/6008096.html
参考: http://www.cnblogs.com/zyf-zhaoyafei/p/4486220.html 作者:万境绝尘 转载请注明出处:http://blog.csdn.net/shulian ...
- 【转载】COM小结
原文:http://blog.csdn.net/byxdaz/article/details/6595210 一.Com概念 所谓COM(Componet Object Model,组件对象模型),是 ...
- [转载]dbms_lob用法小结
http://blog.sina.com.cn/s/blog_713978a50100prkt.html CLOB里存的是2进制 判定长度 DBMS_LOB.GETLENGTH(col1)获取文本 ...
- [转载] IE8+兼容小结
本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...
- js isArray小结
原文:[转载]js isArray小结 在日常开发中,我们经常需要判断某个对象是否是数组类型的,在js中检测对象类型的常见的方法有几种: 1.typeof操作符.对于Function.String.N ...
- 转载:Hadoop排序工具用法小结
本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...
- 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法
转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...
- 转载 asp.net中ViewState的用法详解
转载原地址: http://www.jb51.net/article/73662.htm 在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_V ...
- [转载] Java集合框架之小结
转载自http://jiangzhengjun.iteye.com/blog/553191 1.Java容器类库的简化图,下面是集合类库更加完备的图.包括抽象类和遗留构件(不包括Queue的实现): ...
随机推荐
- Accelerated Failure Time Models加速失效时间模型AFT
Weibull distribution 或者 σ是未知的scale参数,独立于X的常量, σ>0 是服从某一分布的随机变量 残差(residuals)=
- uploadify3.2.1 多文件上传总是只能上传一个文件
再网上找了老半天原因,有人说是上传时调用方法参数应该加上*号(:$('#mulfile_upload').uploadify('upload','*');) 总是不行, 我怀疑下面的原因: 我就以为是 ...
- POJ-2184 Cow Exhibition(01背包变形)
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10949 Accepted: 4344 Descr ...
- spring boot继承web和mybatis时,调用接口删除记录出现的空指针以及解决办法
前两天在学spring boot的时候,出现了一个很奇怪的错误,因为是第一次使用spring boot,所以没想到会遇到这种莫名其妙的bug,即调用接口删除数据库中一条记录的时候,数据库中记录事实上以 ...
- Spring MVC静态资源处理:<mvc:resources />
优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...
- Django - 用户认证、用户组、用户权限
https://www.cnblogs.com/ccorz/p/6358074.html auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. auth可以和a ...
- 【PyQt5-Qt Designer】读取txt文件在打印
from PyQt5.QtGui import QFont,QTextDocument,QTextCursor from PyQt5.QtWidgets import QApplication, QM ...
- 发送html内容的email(转)
html中无法使用css, js.你发送一个<div>片断就好了,不用写整个html页面,因为即使写了,邮件客户端也会删除body之外(包括<body>这个标签)的内容,只留下 ...
- 怎样在wordpress后台显示日志 ID
有时我们需要在wordpress后台编辑特定的文章,找了大半天眼睛都花了,不禁会吐槽一下.有没有什么办法可以直接在日志列表查看日志 ID 呢?我们可以通过下面的代码实现: <?php /* Pl ...
- #if的使用说明
#if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 ...