asp.net 去除viewstate

生成了这么多的一段东西,这段东西对seo一点好处也没有。而我要做的就是去掉它,但有一点,去掉但不能让它原来的控件和内容都发生变化 看下这段代码:
生成了这么多的一段东西,这段东西对seo一点好处也没有。而我要做的就是去掉它,但有一点,去掉但不能让它原来的控件和内容都发生变化,比如说不能使用等等。所以我要做的仅仅是用另一种方式去保存这些数据。这是一段用base64编码的数据而并不是加密,我很好奇到底放了些什么东西在这里面。下面我开始破解这段代码。代码如下:

复制代码代码如下:
ViewState 在 Page.SavePageStateToPersistenceMedium 方法中被保存, 回发时,在 Page.LoadPageStateFromPersistanceMedium 方法中被恢复。 这是我在看“木野狐”翻译的一篇文章中看到的,那么我们可以将其存到session中去,代码如下,来自网络,自做简单修改:

 // 去除VIEWSTATE 生成源代码,并保证VIEWSTATE 同时有效

        protected LosFormatter losFormatter = new LosFormatter();

        protected override object LoadPageStateFromPersistenceMedium()

        {

            string key = Request.Url + "__VIEWSTATE";

            if (Session[key] != null)

            {

                System.IO.MemoryStream stream = (System.IO.MemoryStream)Session[key];

                stream.Seek(0, System.IO.SeekOrigin.Begin);

                return losFormatter.Deserialize(stream);

            }

            return null;

        }

        protected override void SavePageStateToPersistenceMedium(object viewState)

        {

            string key = Request.Url + "__VIEWSTATE";

            System.IO.MemoryStream stream = new System.IO.MemoryStream();

            losFormatter.Serialize(stream, viewState);

            stream.Flush();

            Session[key] = stream;

        }

那么看看现在的viewstate:

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id=" __VIEWSTATE" value="" />

到这一步,我们实现我们要用的功能,去除viewstate,同时保持原先页面的使用。

转自:http://www.itxuexi.com/tech/wangluobiancheng/dotnet/384501255272077.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值