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. 7.19python昨日复习和多线程

    关于GIL锁的经典面试题!!

  2. Git 使用篇二:搭建远程服务器

    一般做一个私人的项目,不希望开源的,是不会放在GitHub上的,这个时候我们需要建里一个自己的Git远程服务器,方便小组成员开发. 这里以Centos云服务器为例: 第一步 如果自己的服务器没有git ...

  3. ububtu16.04下安装protobuf

    重新下载protobuf,我下载的时最新的protobuf-all-3.5.1.tar.gz   protobuf网址:https://github.com/google/protobuf/relea ...

  4. Mapreduce其他部分

    1.hadoop的压缩codec Codec为压缩,解压缩的算法实现. 在Hadoop中,codec由CompressionCode的实现来表示.下面是一些实现: 可分割性:可分割与不可分割的区别:文 ...

  5. 最长上升子序列 OpenJ_Bailian - 2757 dp模板

    第一种是用以前状态更新当前状态(人人为我) 第二种是用当前状态更新以后状态(我为人人) 都是n^2代码: 对于人人为我的更新方法,可以用数据结构储存“人人”对其进行线性\二分优化. ; int a[m ...

  6. ItunesConnect:上传完二进制文件后在构建版本中找不到

    最近经常遇到上传完二进制文件后在构建版本中找不到的情况: 环境:Xcode 8.2 (8C38) 大致有几种原因,可以按照以下步骤排查下. 排查步骤: 1.检查使用的权限,并info.plist文件中 ...

  7. spring中的BeanFactory与ApplicationContext的作用和区别

    BeanFactory 和ApplicationContext Bean 工厂(com.springframework.beans.factory.BeanFactory)是Spring 框架最核心的 ...

  8. java Arrays.asList 问题

    1.问题 public static void asList() { System.out.println(Arrays.asList(new String[] { "a", &q ...

  9. javaScript高级教程(一)javaScript 1.6 Array 新增函数

    1.forEach,map,filter三个函数者是相同的调用参数.(callback[, thisArg]) callback is invoked with three arguments: th ...

  10. flask简单的路由分发

    flask简单的路由分发 from flask import Flask, request app = Flask(__name__) @app.route('/hello') def index() ...