zoukankan      html  css  js  c++  java
  • 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好

    在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>
    现在不改变前台aspx代码,重写Render方法,后台cs代码如下:
    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"" id=""__VIEWSTATE"" value=""[w+\/=]+"" />)", RegexOptions.Multiline | 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)
        {

        }
    }
    最后生成的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>

    </div>

        
    <div>
        
        
    </div>
        
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTKRk3xYdpqlKIfqyg44evx9dxYpQ==" /></form>
    </body>
    </html>
    最后的结果大家也看到了,确实移动了ViewState的html标记的位置,这样对搜索引擎更友好。
  • 相关阅读:
    输出函数
    curl
    页眉的章名和章名不统一
    水平柱状图
    目录和正文的页码生成
    protobuf的使用
    yarn vue安装
    nvm node的安装
    win安装postman
    机器码
  • 原文地址:https://www.cnblogs.com/future/p/923389.html
Copyright © 2011-2022 走看看