星空网 > 软件开发 > ASP.net

ASP.NET页面中去除VIEWSTATE视

保存页的所有视图状态信息和控件状态信息。

源码:http://www.jinhusns.com/Products/Download/?type=xcj

作者在早期参与的项目中曾遇到这样的需求:基于SEO技术的开发,当因为时没有接触的MVC框架的Razor引擎,所以只能用ASP.NET引擎,如果使用ASP.NET引擎的服务器端控件,那么在ASP.NET页面中就会生成__Viewstate隐藏域,__Viewstate隐藏域产生的“乱码”对网络爬虫是极其不友好的!!
乱码”如下:

ASP.NET页面中去除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

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

广州到马来西亚货代:https://www.goluckyvip.com/tag/91778.html
中国邮寄到马来西亚:https://www.goluckyvip.com/tag/91779.html
中国转运马来西亚:https://www.goluckyvip.com/tag/91780.html
成都到马来西亚快运:https://www.goluckyvip.com/tag/91781.html
马来西亚邮寄到中国邮费多少:https://www.goluckyvip.com/tag/91782.html
广州马来西亚货代:https://www.goluckyvip.com/tag/91783.html
价格翻了8倍,居然还有人买,秘诀在这里。:https://www.kjdsnews.com/a/1836642.html
欧洲B2B电商市场有待挖掘!销售总额将达1.7万亿欧元:https://www.kjdsnews.com/a/1836643.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流