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使用小结的更多相关文章

  1. <转载> GIT 操作小结 http://www.cnblogs.com/-ding/p/6008096.html

    参考: http://www.cnblogs.com/zyf-zhaoyafei/p/4486220.html 作者:万境绝尘 转载请注明出处:http://blog.csdn.net/shulian ...

  2. 【转载】COM小结

    原文:http://blog.csdn.net/byxdaz/article/details/6595210 一.Com概念 所谓COM(Componet Object Model,组件对象模型),是 ...

  3. [转载]dbms_lob用法小结

    http://blog.sina.com.cn/s/blog_713978a50100prkt.html CLOB里存的是2进制 判定长度   DBMS_LOB.GETLENGTH(col1)获取文本 ...

  4. [转载] IE8+兼容小结

    本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...

  5. js isArray小结

    原文:[转载]js isArray小结 在日常开发中,我们经常需要判断某个对象是否是数组类型的,在js中检测对象类型的常见的方法有几种: 1.typeof操作符.对于Function.String.N ...

  6. 转载:Hadoop排序工具用法小结

    本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...

  7. 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法

    转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...

  8. 转载 asp.net中ViewState的用法详解

    转载原地址: http://www.jb51.net/article/73662.htm 在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_V ...

  9. [转载] Java集合框架之小结

    转载自http://jiangzhengjun.iteye.com/blog/553191 1.Java容器类库的简化图,下面是集合类库更加完备的图.包括抽象类和遗留构件(不包括Queue的实现): ...

随机推荐

  1. Java -- 给定一个int数组,拼接出最大数值

    public class ZhiJieTiaoDong { /* 给定一个数组:组合成最大数值 */ public String szpj(int[] args){ if(null == args | ...

  2. PHP 学习笔记之一:thinkPHP的volist标签

    Volist标签主要用于在模板中循环输出数据集或者多维数组. 属性: name : 必须,输出数据模板变量,后台提供的变量. id : 必须,是循环变量,可以随便定义,但是不能跟name相同. 举个栗 ...

  3. ZOJ 3993 - Safest Buildings - [数学题]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3993 题意: 给出n幢建筑,每个都以一个点表示,给出点坐标. 有 ...

  4. Oracle安全之Oracle日志挖掘

    logminer基于包: [oracle@localhost ~]$ ls /u01/oracle/10g/rdbms/admin/dbmslm.sql -->dbms_logmnr工具 /u0 ...

  5. ES6 ruanyifeng, shim polyfill

    http://www.cnblogs.com/upup2015/p/7927485.html 一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false npm in ...

  6. LoadRunner-录制脚本中文显示乱码

    录制的脚本中中文字符显示乱码 在Tools->Recording Options中设置支持UTF-8即可

  7. oracle数据迁移到mysql

    今天遇到需求要把oracle的部分数据搬到mysql,用java代码抓数据,然后拼接成sql语句,然后用navicat执行sql脚本的方法,导入数据库. import oracle.jdbc.driv ...

  8. 利用compass制作雪碧图

    compass是什么?是sass一款神奇插件,具体教程,我还是推荐阮一峰sass,compass教程,简单清晰明了. 用ps制作雪碧图,工作效率太低了.用compass来制作,方便很多.下图的用com ...

  9. git vim 编辑器基本操作

      用 git 命令行提交文件时,默认使用 vim 编辑器,基本操作: 按 a, i 或 o 进入编辑模式 按 ESC 进入操作模式 在操作模式下,:wq 为写入退出,:q! 不保存退出

  10. 给sql server2005打补丁报错:无法安装Windows Installer MSP文件

    给sql server2005打补丁报错:无法安装Windows Installer MSP文件 在我们安装完SQL2005数据库后,需要安装SP4补丁时,会出错:无法安装Windows Instal ...