调整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标记的位置,这样对搜索引擎更友好。
分享到:
相关推荐
ASP.NET ViewState 是一种机制,主要用于在Web应用的页面往返行程中保持用户界面(UI)的状态。由于Web的本质是无状态的,每次用户请求页面时,服务器都会创建一个新的页面实例,而ASP.NET页面也不例外。这就意味着...
ASP.NET是一种由微软开发的服务器端Web应用程序框架,用于构建动态网站...通过研究这些项目,你可以学习到如何组织代码结构、如何处理用户交互、如何优化性能,以及如何利用ASP.NET的强大功能来创建复杂的Web解决方案。
本压缩包中的"asp.net源代码"很可能是为了展示如何利用ASP.NET进行动态网页开发,通过实例帮助学习者理解和应用相关技术。 在ASP.NET中,开发人员可以使用多种编程语言,如C#、VB.NET等,编写服务器端代码。这些...
解压这两个文件后,学习者可以查看和运行代码,理解ASP.NET如何构建Web应用,以及三层架构如何在实践中运作。 通过分析这个源代码,你可以学习到ASP.NET中控件的使用,如GridView、DetailsView用于数据展示,以及...
`ViewState 代码查看器`工具能够帮助开发者查看这个加密后的字符串,并将其解码成可读的格式。通过这种方式,开发者可以检查哪些控件的数据被保存在ViewState中,以及它们是如何被编码的。这对于排查状态丢失、性能...
ASP.NET宠物商店网页MyPetShop源代码是一个基于微软的ASP.NET技术开发的示例应用,它为学习和理解ASP.NET的Web应用程序开发提供了丰富的实践素材。这个项目包含了用户登录、商品展示、购物车管理和后台商品管理等多...
### 理解ASP.NET的ViewState #### 引言 ASP.NET ViewState是ASP.NET网页用于在PostBack(页面提交)之间持久化Web表单状态的一种技术。对于许多ASP.NET开发者而言,ViewState一直是令人困惑的主题之一。无论是创建...
通过分析这个“轮播代码”文件,你可以学习到如何将这些ASP.NET技术和设计理念结合起来,创建一个功能完整、用户体验良好的轮播图组件。这对于提升ASP.NET开发技能,尤其是页面动态效果的实现,是非常有价值的实践。
这将涉及到ASP.NET与JavaScript的交互,例如通过`<asp:ScriptManager>`控件注册脚本,或者使用`<asp:UpdatePanel>`实现部分页面更新。 总的来说,通过实现九九乘法表,你可以深入学习ASP.NET的服务器控件、页面生命...
10. **部署**:理解IIS配置、发布设置和Web Deploy工具,能够顺利地将ASP.NET应用部署到服务器。 这些实验代码可能会涵盖以上一个或多个方面,通过实践这些代码,你可以更好地掌握ASP.NET的精髓,提升自己的编程...
本压缩包包含的是ASP.NET的经典源代码,这些源代码对于学习和掌握ASP.NET技术具有很高的参考价值。 在ASP.NET中,开发人员可以使用C#编程语言进行开发,C#是一种面向对象的、现代的编程语言,它拥有丰富的特性和库...
【标题】"asp.net示例源代码" 涉及的知识点主要集中在ASP.NET这一微软开发的Web应用程序框架上。ASP.NET是.NET Framework的一部分,它为开发者提供了构建动态网站、Web应用和Web服务的强大工具。这个标题暗示了我们...
在你提到的“asp.net初学者适合看的代码”中,我们可以从中学习到以下关键知识点: 1. **ASP.NET Web Forms**:这是ASP.NET的一种编程模型,允许开发者通过拖放控件和事件驱动编程来构建网页。在你的项目中,可能会...
1. **Asp.net架构**:Asp.net采用了页面生命周期模型,使得开发者能够精确控制页面从请求到响应的每个阶段。它包含一系列的事件,如Init、Load、PreRender等,允许在特定时间点进行代码执行。 2. **Web Forms**:...
10. **部署与IIS配置**:可能包含一些关于如何将ASP.NET应用部署到IIS(Internet Information Services)服务器上的教程或示例。 11. **错误处理与日志记录**:良好的错误处理和日志记录是任何应用的基础,这些代码...
这个"asp.net实例源代码合集"显然是一个包含多种ASP.NET应用场景的代码库,可能涵盖从基础到高级的各种技术。 在ASP.NET中,你可以了解到以下关键知识点: 1. **页面生命周期**:ASP.NET页面经历一系列的生命周期...
ASP.NET是一种由微软开发的服务器端Web应用程序框架,用于...通过深入研究这些源代码文件,我们可以学习到ASP.NET开发的实践技巧,理解如何将数据库操作与前端交互结合,以及如何设计和实现一个完整的Web应用程序流程。
这个“ASP.NET 揭密”很可能是关于深入理解 ASP.NET 技术的资料集合,可能包括源代码、教程文档或示例应用。 ASP.NET 的核心概念: 1. **页面生命周期**:ASP.NET 页面从请求开始到响应结束经历一系列的生命周期...
【个人主页的代码(ASP.NET)】是一套用于构建个人网站的源代码,它基于微软的ASP.NET技术栈。ASP.NET是一种强大的Web开发框架,它为开发者提供了丰富的工具和功能,使得创建动态、交互式的网页变得更为简便。对于...
【标题】"经典购物车代码asp.net20开发"涵盖了ASP.NET 2.0框架下构建电子商务网站的核心组件——购物车功能的实现。ASP.NET 2.0是微软推出的一个强大的Web应用程序开发平台,它提供了丰富的控件和功能,简化了开发...