估计很多刚接触Asp.Net的朋友对.Net页面中_VIEWSTATE中的一大串加密字符头痛不已,这些字符严重影响了我们网页的加载速度,这些都是微软为了保持页面发回时的数据状态而添加的一种机制。当然,也有朋友会说,这有什么关系呢,我把页面或者控件的EnableViewState设置为False不就没有这些烦心的字符了么?当然,如果你的页面允许你关闭它,我们更加提倡你关闭它。但是,关闭它会来了一些不便之处,比如Button按钮的某些事件就不能用了,ViewState[""]也不能用了。
从Asp.Net2.0后,微软增加了改变VIEWSTATE存储方式与位置的功能,本章,我们就来讨论VIEWSTATE存储方式的问题。
Asp.Net2.0以前,VIEWSTATE都是以HiddenField的形式存在页面中的,2.0后,微软新增了PageStatePersister属性,让程序员可以选择是将VIEWSTATE存在页面中,还是以Session的形式存在服务器中。
使用方法,重写页面的PageStatePersister属性即可。
示例代码如下:
将VIEWSTATE存在页面中,也是Asp.Net的默认形式
protected override PageStatePersister PageStatePersister
{
get
{
return new HiddenFieldPageStatePersister(this);
}
}
将VIEWSTATE以Session的形式存在服务器中
protected override PageStatePersister PageStatePersister
{
get
{
return new SessionPageStatePersister(this);
}
}
你自己还可以自定义VIEWSTATE的存储位置,有兴趣的朋友可以在网上搜索自定义VIEWSTATE存储位置的方法。
注意:将VIEWSTATE存储的Session中,经常会因为Session丢失而造成VIEWSTATE中的信息也丢失,编辑曾多次碰到这种情况。
关于Session丢失的详解,请参看本站:
Session丢失的解决办法&