当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: ViewState 剖析(翻译兼笔记) 原文链接:ViewSt
 

 

    摘要:以下以php4为例说明,java也可以套用理解。一、类的属性与类的方法中变量的区别  初学者常常混淆两者的关系。 class a{ var $a;//这是类的一个属性,使用范围是这个类 function a($a){ $a = $a."this is class a";//这是一个普通变量,作用范围是这个构造函数内部。 $this->a = $a; }…......
 ·smalltalk的变量    »显示摘要«
    摘要:st80的变量可以分为两大类:私有变量和公有变量。 私有变量包括实例变量和临时变量两种。 实例变量允许实例的所有函数(方法)访问,临时变量则是某一个函数的私有变量。一个类的子类的实例也可以访问实例变量。 公有变量则包括class变量,全局变量和pool变量三种。 class变量允许一个类极其子类的所有实例访问。全局变量允许所有的类实例访问。 pool变量则允许一部分的类的实例访问。 实例......


ViewState 剖析(翻译兼笔记)

viewstate 剖析(翻译兼笔记)

【程序编程相关:惊爆!游戏业界第一人 刘德建:完全公开《

原文链接:viewstate: all you wanted to know 【推荐阅读:在HP-UX系统中用SAM工具查看系统信

【扩展信息:如何在SQL中启用全文检索功能?(实例)

作者:paul wilson

翻译:木野狐

viewstate 不是什么?

1. viewstate 不是用来恢复回发的控件的值.

这个是通过匹配 form 中该控件的变量名而自动完成的.这个只对 load 事件加载之前创建的控件有效.

2. viewstate 不会自动重新创建任何通过代码动态创建的控件.

3. 不是用来保存用户信息的.仅仅保存本页的控件状态,而不能在页面之间传递.

viewstate 是什么?

viewstate 用来跟踪与保存控件的状态信息.否则这些信息可能会丢失,原因可能是这些值不随着 form 回发,或者根本就不在 page 的 html 中.

viewstate 中保存着代码中改变的控件属性,通过代码绑定到控件的任何数据,以及由用户操作触发,回发的任何更改.

viewstate 还提供了一个状态包(statebag), 这是一个特殊的集合或字典(collection or dictionary), 可以用来保存,通过一个 key 来恢复任意的对象或者值.

viewstate 的格式

保存在表单中的 __viewstate 隐藏字段.是 base64 编码过的,而不是加密!

但要加密也是可以的(设置 enableviewstatemac 来使用 machine key 进行 hash)

加密:设置 machinekey 验证, 但这必须在机器级别设置,需要更多的资源,所以不推荐.

listing 1: viewstate machine hash disabledmachine.config or web.config: <pages enableviewstatemac=´false´ /> page level directive: <%@page enableviewstatemac=´false´ %> page level script code: page.enableviewstatemac = false; listing 2: viewstate encryption is enabledmachine.config: <machinekey validation=´3des´ validationkey=´*´ /> where the validationkey must be the same across a web-farm setup also requires the enableviewstatemac property setting to be true

在 rendering 之前,viewstate 在 page.savepagestatetopersistencemedium 方法中被保存,

回发时,在 page.loadpagestatefrompersistancemedium 方法中被恢复.

这两个方法都可以轻易的被重写,从而实现保存 viewstate 到 session 中.这适合于带宽小的场合,

如移动设备默认是采用 session.代码如下:


...   下一页
 ·linux上jdk的安装    »显示摘要«
    摘要:1. 去http://java.sun.com/j2se/1.4.2/download.html 下载一个linux platform的jdk,建议下载rpm自解压格式的(rpm in self-extracting file,j2sdk-1_4_2_06-linux-i586-rpm.bin);2. 上载到linux服务器上,在shell下执行命令: [root@linuxserv......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE