ASP.NET页面中去除VIEWSTATE视
保存页的所有视图状态信息和控件状态信息。
源码:http://www.jinhusns.com/Products/Download/?type=xcj
作者在早期参与的项目中曾遇到这样的需求:基于SEO技术的开发,当因为时没有接触的MVC框架的Razor引擎,所以只能用ASP.NET引擎,如果使用ASP.NET引擎的服务器端控件,那么在ASP.NET页面中就会生成__Viewstate隐藏域,__Viewstate隐藏域产生的“乱码”对网络爬虫是极其不友好的!!
“乱码”如下:

所有问题就来了,在商业项目开发中就需要我们把__Viewstate隐藏域生成的“乱码”去除掉。
这里我们讨论如下几个方案。
方案一:
去掉form的标签的 runat="server" 属性的话,就可以不生成__viewstate隐藏域,但是服务器控件就没法用了,所以在需要使用服务器端正控件的时候就此方法是行不通的。
方案二:
给服务器端正控件的EnableViewState属性设置为false,此时我们发现网页的Viewstate有明显代码减少,但还是存在视图状态。。。
方案三:
些方案需要了解.NET的一些基类,如System.Web.dll。
System.Web.dll封装了LosFormatter类。
在MSDN上对此类的描述是: 序列化 Web 窗体页的视图状态。
此时我们需要LosFormatter类里封装的Serialize方法,功能描述如下:将有限对象序列化 (LOS) 格式的对象转换为视图状态值并将结果放置在 System.IO.Stream 对象中。
去除国“乱码”代码如下:
/// <summary>
/// 去除VIEWSTATE乱码代码如下所示:
/// </summary>
protected LosFormatter losFormatter = new LosFormatter(); /// <summary>
/// 序列化所有视图状态信息和控件状态信息。
/// </summary>
/// <param name="viewState">要在其中存储视图状态信息的 Object</param>
protected override void SavePageStateToPersistenceMedium(object viewState)
{
string val = Request.Url + "__VIEWSTATE";
System.IO.MemoryStream stream = new System.IO.MemoryStream();
losFormatter.Serialize(stream, viewState);
stream.Flush();
Session[val] = stream;
}
ASP.NET页面中去除VIEWSTATE视的更多相关文章
- ASP.NET页面中去除VIEWSTATE视图状态乱码
保存页的所有视图状态信息和控件状态信息. 基于SEO技术的开发,在没有接触MVC框架 Razor 引擎的时候,我们需要使用ASP.NET引擎,如果使用ASP.NET引擎的服务器端控件,那么在ASP.N ...
- [转] c# 模拟Asp.net页面中的某个按钮的点击,向web服务器发出请求
在没有做题目中所述的内容的时候,感觉这应该是很简单的东西,但是当真正开始做的时候却发现,有很多问题现在在这里写出来,供和我一样水平不高的参考一下. 在写本文之前参照了一下文章 欢迎使用CSDN论坛阅读 ...
- 使用C#模拟ASP.NET页面中按钮点击
c# 模拟Asp.net页面中的某个按钮的点击,向web服务器发出请求 主要就组织要提交的数据,然后以post方式提交. 假设我们有如下的网页 1 <% @ Page Language = &q ...
- Asp.net页面中调用soapheader进行验证的操作步骤
Asp.net页面中调用以SOAP头作验证的web services操作步骤 第一步:用来作SOAP验证的类必须从SoapHeader类派生,类中Public的属性将出现在自动产生XML节点中,即: ...
- 如何在ASP.NET页面中使用异步任务(PageAsyncTask)
在页面加载期间,可能有些操作是要比较耗用时间的(例如调用外部资源,要长时间等待其返回),正常情况下,这个操作将一直占用线程.而大家知道,ASP.NET在服务端线程池中的线程数是有限的,如果一直占用的话 ...
- 页面中去除浮动 clear:both
今天写代码发现一个很奇怪的问题,发现上面的div加浮动(不管是否包含div)以后对下面div的浮动有所影响,通过去除浮动,搞定: 只需要在受影响的div中的样式中,加入clear:both即可
- asp.net页面中的Console.WriteLine结果如何查看
其实用Console.WriteLine("xxxxx"),在asp.net Web程序,在输出窗口是不会输出结果的,应该用Debug.WriteLine("xxxxx& ...
- asp.net页面中实现如果图片不存在则显示默认图片
onerror="this.src='/SysAdmin/images/noTouXiang.jpg';"
- asp.net 页面中添加普通视频的几种方式
第一种 是通过调用window media player进行播放诸如:wmv,asf等格式文件: <object align=center class="OBJECT" cl ...
随机推荐
- [ACM_几何] The Deadly Olympic Returns!!! (空间相对运动之最短距离)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28235#problem/B 题目大意: 有两个同时再空间中匀速运动的导弹,告诉一个时间以 ...
- [转]quick-cocos2d-x 多分辨率适配详解
http://cn.quick-x.com/?p=1436 多种分辨率的适配一直都是一个蛋疼的问题,各家公司可能都有自己的一套方案.今天我为大家介绍的是我们在多款游戏里实践后的解决方案,相对来说成本和 ...
- 谈谈c#中异步编程模型的变迁
大家在编程过程中都会用到一些异步编程的情况.在c#的BCL中,很多api都提供了异步方法,初学者可能对各种不同异步方法的使用感到迷惑,本文主要为大家梳理一下异步方法的变迁以及如何使用异步方法. Beg ...
- webservice 之 WSDL的解析
先看一个wsdl, <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...
- 2015 年最受 Linux 爱好者欢迎的软硬件大盘点
Linux 爱好者都喜欢用哪些硬件,哪些发行版呢?近日 OpenBenchmarking.org 做了一个 2015 年度数据的统计和梳理,Linux Story 特意整理了一下,分享给大家. 转载于 ...
- 我心中的核心组件(可插拔的AOP)~第十二回 IoC组件Unity
回到目录 说在前 Ioc组件有很多,之前也介绍过autofac,castle等,今天再来说一下在微软Nlayer DDD架构里使用的unity组件,今天主要说一下依靠注入,如果希望看拦截的用法,可以阅 ...
- C#设计模式-简单工厂
工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类.工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(F ...
- Java 线程 — ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor 该类继承自ThreadPoolExecutor,增加了定时执行线程和延迟启动的功能,这两个功能是通过延时队列DelayedWorkQueue辅助 ...
- Deep learning:四十六(DropConnect简单理解)
和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...
- Simptip – 使用 Sass 制作的 CSS Tooltip 效果
Simptip 是一个简单基于 Sass 的 CSS 工具提示效果.帮助你在网站中加入在不同的方向(上.左.右.下)的工具提示,也可以设置不同的颜色如成功.信息.警告和危险.最后还有其他特性如软边.半 ...