DNN Remove ViewState

本文详细介绍了 ASP.NET 中 ViewState 的存储与加载机制,包括如何使用 Session 对象和 Cache 来保存和恢复页面状态,以及使用自定义序列化器进行数据持久化。
VB.net:
Protected Overrides Function LoadPageStateFromPersistenceMedium() As Object
            Dim key As String = Request.RawUrl + "__viewstate"
            If Session(key) IsNot Nothing Then
                Dim stream As MemoryStream = DirectCast(Session(key), MemoryStream)
                stream.Seek(0, SeekOrigin.Begin)
                Return losFormatter.Deserialize(stream)
            End If
            Return Nothing
        End Function
        Protected Overrides Sub SavePageStateToPersistenceMedium(ByVal state As Object)
            Dim key As String = Request.RawUrl + "__viewstate"
            Dim stream As New MemoryStream()
            losFormatter.Serialize(stream, state)
            stream.Flush()
            Session(key) = stream
        End Sub

 

C#:

protected override object LoadPageStateFromPersistenceMedium()
        {
            string key = Request.RawUrl + "__viewstate";
            if (Session[key] != null)
            {
                MemoryStream stream = (MemoryStream)Session[key];
                stream.Seek(0, SeekOrigin.Begin);
                return losFormatter.Deserialize(stream);
            }
            return null;
        }

        protected override void SavePageStateToPersistenceMedium(object state)
        {
            string key = Request.RawUrl + "__viewstate";
            MemoryStream stream = new MemoryStream();
            losFormatter.Serialize(stream, state);
            stream.Flush();
            Session[key] = stream;
        }

 

里面涉及到一个参数的定义:

protected LosFormatter losFormatter = new LosFormatter();

 

另外Cache方式:

protected override void SavePageStateToPersistenceMedium(object viewState)
{
string str = "VIEWSTATE_" + Request.UserHostAddress + "_" + DateTime.Now.Ticks.ToString();
Cache.Add(str, viewState, null, DateTime.Now.AddMinutes(Session.Timeout),TimeSpan.Zero, CacheItemPriority.Default, null);
RegisterHiddenField("__VIEWSTATE_KEY", str);
RegisterHiddenField("__VIEWSTATE", "");
}

protected override object LoadPageStateFromPersistenceMedium()
{
string str = Request.Form["__VIEWSTATE_KEY"];
if (!str.StartsWith("VIEWSTATE_")) {
throw new Exception("Invalid viewstate key:" + str);
}
return Cache[str];
}

 

参见:http://www.eggheadcafe.com/articles/20040613.asp

 

参考:
 
 
2003年发布的: http://aspalliance.com/72
 

转载于:https://www.cnblogs.com/nevernet/archive/2011/07/04/2097262.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值