在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在asp.net页面中经常会出现一些ViewState的html标记,也许某些时候你会禁用ViewState,但是某些情况下你不得不使用它——因为它的便捷性,但是由于在默认情况下,ViewState的HTML标记总是在页面的最前面,而且都是一些没有意义的内容,一般的搜索引擎收录的时候 就会将这些无意义的字符串收录进去,这样就会严重影响你所制作的网页在搜索引擎的排名。有没有解决办法?答案是有的,可以将ViewState的Html标记移到底部,不影响性能,对搜索引擎更友好。这种方法就是重写页面的Render,将ViewState的Html标记移到底部。 原始页面的HTML:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Top.aspx.cs" Inherits="Admin_Top" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>调整ViewState的位置,让你的asp.net页面对搜索引擎更友好</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html> 这个页面后台没有任何业务cs代码的情况下,得到的HTML代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head><title> 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好 </title></head> <body> <form name="form1" method="post" action="Top.aspx" id="form1"> <div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTKRk3xYdpqlKIfqyg44evx9dxYpQ==" /> </div> <div> </div> </form> </body> </html>
using System;
using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Text.RegularExpressions; using System.Text; public partial class Admin_Top : System.Web.UI.Page { //ViewState的Html标记的正则表达式 private static readonly Regex viewStateRegex = new Regex(@"(<input type=""hidden"" name=""__VIEWSTATE"" > RegexOptions.Compiled); //</form>标记的正则表达式 private static readonly Regex endFormRegex = new Regex(@"</form>", RegexOptions.Multiline | RegexOptions.Compiled); protected override void Render(HtmlTextWriter writer) { System.IO.StringWriter stringWriter = new System.IO.StringWriter(); HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); base.Render(htmlWriter); string html = stringWriter.ToString(); Match viewStateMatch = viewStateRegex.Match(html); string viewStateString = viewStateMatch.Captures[0].Value;//找出ViewState的Html标记 html = html.Remove(viewStateMatch.Index, viewStateMatch.Length);//替换掉ViewState的html标记 Match endFormMath = endFormRegex.Match(html, viewStateMatch.Index); html = html.Insert(endFormMath.Index, viewStateString);//将ViewState的Html标记插入到</form>标记之前 writer.Write(html); } protected void Page_Load(object sender, EventArgs e) { } } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head><title> 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好 </title></head> <body> <form name="form1" method="post" action="Top.aspx" id="form1"> <div> </div> <div> </div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTKRk3xYdpqlKIfqyg44evx9dxYpQ==" /></form> </body> </html> |
请发表评论