去掉viewstate生成的代码

看着自己网站编译之后的源文件,里面很多乱七八糟的东西,看了就觉得不舒服

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE3NjgxMzM0MDIPZBYCZg9kFgIC……

还有form源文件,一看就知道是asp.net的页面

<form name="form1" method="post" action="smartDropDownList.aspx" id="form1">

知道博客园也是ASP.NET做的,就好奇地看看博客园的首页源文件,发现没有这些玩意,后来问了下别人,网上也找了点资料;

总结了一下自己的想法:

1、如果你的一个页面没有什么复杂的数据交互,例如登录你可以改用成ajax的登录,单条新闻界面也可以去掉,如果有留言也可以采用ajax的方式去完成!

2、后台管理页面,数据交互性一般都有点复杂,我就觉得没有什么必要去掉哪些东西了,反正后台对SEO没有任何影响,我好奇地看了看博客园的后台也是有的

不废话了,直接贴代码,在你的页面代码中加上如下函数

View Code
 1 protected override void Render(HtmlTextWriter writer)
2 {
3 System.IO.StringWriter html = new System.IO.StringWriter();
4 System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(html);
5 base.Render(tw);
6 string Temp = html.ToString();
7 string s1 = string.Empty, s2 = string.Empty, s3 = string.Empty, s4 = string.Empty, s5 = string.Empty, s6 = string.Empty;
8 int i = 0;
9 int j = 0;
10
11 i = Temp.IndexOf("<form");
12 if (i > 0)
13 {
14 j = Temp.IndexOf(">", i);
15 s1 = Temp.Substring(0, i);
16 s2 = Temp.Substring(j + 1, Temp.Length - j - 1);
17 }
18
19 i = s2.IndexOf("<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\"");
20 if (i > 0)
21 {
22 j = s2.IndexOf(">", i);
23 s3 = s2.Substring(0, i);
24 s4 = s2.Substring(j + 1, s2.Length - j - 1);
25 }
26
27 i = s4.IndexOf("<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\"");
28 if (i > 0)
29 {
30 j = s4.IndexOf(">", i);
31 s5 = s4.Substring(0, i);
32 s6 = s4.Substring(j + 1, s4.Length - j - 1);
33 Temp = s1 + s3 + s5 + s6;
34 }
35 else
36 {
37 Temp = s1 + s3 + s4;
38 }
39 Temp = Temp.Replace("</form>", "");
40 Temp = Temp.Replace("\r\n", "");
41 tw.Close();
42 Response.Write(Temp);
43 }

其实就是重写了Render方法,然后截取html源文件就能解决了,更具自己的情况去使用,觉得好用就用下!

如果你觉得简单,或者不屑,不要,有问题请拍砖,谢谢!
版权所有,转载请注明出处!

一切伟大的行动和思想,都有一个微不足道的开始。微不足道的我,正在吸取知识的土壤,希望能取得成功!不嫌弃我微不足道的,愿交天下好友!

原文地址:https://www.cnblogs.com/cmsdn/p/2285137.html