Asp.net2.0里的SessionPageStatePersister
备注:
ASP.NET 页可在处理和提供任何网页所必需的原本无状态 HTTP 请求与响应之间存储 Page 状态信息。此状态称为“视图状态”。
ASP.NET 的默认持久性机制是使用 HiddenFieldPageStatePersister 类将视图状态存储在客户端。使用各个 HTTP 请求和响应来存储视图状态和数据在大体上来说效果良好,而且在大型 Web 场方案中非常重要,因为由哪台 Web 服务器来处理该请求并不重要:当前上下文中提供了页状态,因此服务器可以准确地呈现该页。
在将页提供给客户端资源有限或所用标记语言不支持隐藏字段元素的小型设备时,需要将视图状态存储在服务器上。一些 ASP.NET 设备页适配器重写 GetStatePersister 方法以返回一个 SessionPageStatePersister 对象,该对象将页状态存储在服务器上与客户端关联的会话对象中。
Asp.net1.1里的Viewstate,我们可以看作是在页面加入一个隐藏域,将页面状态进行保存,所以我们在html源码里常见到如下类似代码:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPaA8FDzhjNzkyNTMzNjE1YWEyNxgBBQlHcmlkVmlldzEPZ2QZw
44JLJFcglwRl9TiNliE82yAuQ==" />
如果我们想将其状态保存到session里,必须手动操作;Asp.net2.0里就简单了。
Asp.net2.0里用来维护页面状态的2种页面属性:HiddenFieldPageState 、SessionPageStatePersister
前一种类似以前1.1里的viewstate行为,主要看后一种。
通过一个例子,可以更形象了解SessionPageStatePersister
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected override PageStatePersister PageStatePersister { get { return new SessionPageStatePersister(this); } }
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
if (!IsPostBack) {
ArrayList list = new ArrayList();
for (int i = 0; i < 1000; i++)
{
list.Add(Convert.ToString(i));
}
GridView1.DataSource = list;
GridView1.DataBind();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Untitled Page</title></head><body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Submit" /></div>
</form></body></html>
高亮部分注
释掉再次运行,比较html源码可以看到页面状态真的保存到session里去了(不注释掉时)。
使用方法1:我们可以构造一个basepage,需要的话,后续页面继承自basepage
public class PagePersisterBasePage : Page
{
public PagePersisterBasePage() {
}
protected override PageStatePersister PageStatePersister {
get {
return new SessionPageStatePersister(this);
}
}
}
===================
<%@ Page Language="C#" Inherits="PagePersisterBasePage" %>
使用方法2:在web.config里设置
<?xml version="1.0"?>
<configuration>
<system.web>
<pages pageBaseType="PagePersisterBasePage" />
</system.web>
</configuration>
-----------------注意这时“影响范围”与方法1是不同的-----------------
Asp.net2.0里的SessionPageStatePersister的更多相关文章
- 在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table)
原文:在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table) 打印指定内容: <html> <head> <script type= " ...
- 【IHttpHandler】在ASP.Net2.0中使用UrlRewritingNet实现链接重写
很多时候我们需要链接转向(Url Rewriting),例如二级域名转向.文章访问链接等场合. 让我们看两个例子: 1 你现在看到的当前作者的博客园的域名: http://jx270.cnblogs. ...
- asp.net2.0安全性(2)--用户个性化设置(1)--转载来自车老师
在Membership表中可以存储一些用户的基本信息,但有的时候,我们需要记录的用户信息远远不止Membership表中提供的这些,如QQ.MSN.家庭住址.联系电话等等.那如何把这些用户信息记录到数 ...
- asp.net2.0安全性(2)--用户个性化设置(2)--转载来自车老师
上一篇我们用Profile.age等方式可以读取用户的年龄和其它的信息,但有的时候我们要查询显示所有用户的信息,但asp.net没有提供查询所有用户信息的功能,我们只能对现有的用户逐一查询其Profi ...
- asp.net2.0安全性(3)--验证与授权--转载来自车老师
"验证"与"授权"是对网页资源安全管理的两道门. 验证(Authentication):检查用户是否是合法的用户.就像是网站大门口的保卫,服责验证使用的用户名和 ...
- asp.net2.0安全性(1)--用户角色篇(类)--转载来自车老师
Membership.MembershipUser和Roles类 用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的. Membership:用户成员账号管理, ...
- asp.net2.0安全性(1)--用户角色篇(起篇)--转载来自车老师
安全管理的解决方案在.net1.1中几乎为一片空白,对于应用程序的验证与授权大部分的工作是开发人员自己编写代码,或者是借助企业库等工具来实现,此可谓.net1.1中的一大缺憾.在.net2.0中微软为 ...
- Asp.Net2.0下C#环境 Login控件实现用户登录
原文:Asp.Net2.0下C#环境 Login控件实现用户登录 一.前台显示效果 二.前台代码 <asp:Login ID="Login1" run ...
- ASP.NET2.0组件控件开发视频 初体验
原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...
随机推荐
- PHP与Web页面的交互
1.form表单默认情况下提交数据的方式为get方式. 2.PHP脚本用来处理表单数据的预定义变量是$_GET,$_POST(区分大小写) 代码示例:(特别注意复选框属性name的时候加数组) sim ...
- mysql设置远程访问密码
mysql -u root -p Aaa111222 grant all privileges on *.* to root@'%' identified by 'aaa111222; Quit ln ...
- 利用tempo将json数据填充到html模板
1.下载tempo 2.使用 <!DOCTYPE html> <html> <head lang="zn-ch"> <meta chars ...
- Ubuntu下Wine使用教程
转自:http://blog.csdn.net/wangchangshuai0010/article/details/12057251 用了段时间的Ubuntu,感觉很好!可是工作的时候还是要用到 w ...
- Kubernetes 1.7版本安装
为什么搞完kubernetes 1.5又要装1.7, :( 是因为微服务架构istio的要求,而且直接用yum安装怎么都是1.5,所以只能通过下载包并且改配置文件的方式了,也好,花两天时间把整个过 ...
- java8 遍历数组的几种方式
java8 遍历数组的几种方式 2017年04月05日 09:15:46 阅读数:4640 风格色 2017-02-11 18:41 有如下一个String数组 String[] array = {& ...
- python3将docx转换成pdf,html文件,pdf转doc文件
直接上代码 # -*- encoding:utf-8 -*- """ author:lgh 简单的doc转pdf,html,pdf转doc脚本 依赖库pdfminer3k ...
- git 超前一个版本 落后一个版本的解决方案
在使用SourceTree的时候经常会遇见超前一个版本,落后N个版本的情况,遇见这种情况应该怎么办呢? 首先打开终端,最好是从SourceTree里面打开,菜单栏有个终端按钮. 然后输入: $ git ...
- Java中的SPI(Service Provider Interface)
转自:http://singleant.iteye.com/blog/1497259 最近看到公司的一些框架和之前看到的开源的一些框架的一些服务发现和接入都采用了java的spi机制. 所以简单的总结 ...
- axios 同时执行多个请求
http://chuansong.me/n/394228451820 同时执行多个请求 axios.all([ axios.get('https://api.github.com/xxx/1'), a ...