当前位置: 首页 > 图文教程 > 网站运营 > 网站优化 > Asp.Net程序员与SEO - Viewstate优化(二)

网站优化
flash对seo的影响分析
更新网站百度快照的方法 关键词与外链
可以增加关键字密度几种好方法
导致网站被百度降权的常见因素分析
SEO 策略 搜索引擎 排名
Flash 网站优化有窍门
SEO 优化需要兼顾用户体验设计
不容忽视的SEO优化细节
SEO第一名 只能是谎言
个人站长推广经验与技巧小结
百度快照 频频停止 几种原因分析
微软Bing搜索引擎 网站提交
Bing 网站管理员工具使用指南
国外 SEO优化 几个知识
Web 图片优化技巧总结
SEO 初学者必读
写软文离不开文字功底和素材的说明
SEO 初学者需要掌握的几个基本技能
Google 网页质量 评估 分析
百度对于新站平稳收录的一些技巧分享

网站优化 中的 Asp.Net程序员与SEO - Viewstate优化(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 146 ::
收藏到网摘: n/a

最近有些忙,终于把Asp.net的 Viewstate优化(二) 这里出来。前面的Asp.Net程序员与SEO - Viewstate优化( 一 )可能看起来不是很明白,那么我这篇翻译后给大家留个原代码,可以下载下来看看。下面内容接上节开始:

我们的网页适配器在这个form的底部添加一个隐藏字段__SEOVIEWSTATE来放实际视图状态数据,唯一的局限性是你不能直接在asp.net form 内的表达式来表现它。然而,这种限制可以很容易地避免把表达的预留位置控制或内部另一个控制。深入解释这一限制看看这篇文章

让我们通过一个例子来看适配器起的作用. 下面的ASP.NET page:

以下为引用的内容:
<%@ Page Language="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="SEOViewStateAdapterTest._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
   
<title></title>
</head>
<body>
   
<formid="form1"runat="server">
   
<div>
        Enter a message:
<br/>
       
<asp:TextBoxID="txtMessage"runat="server"></asp:TextBox><br/>
       
<asp:ButtonID="bSaveMessage"runat="server"Text="Save Message"onclick="bSaveMessage_Click"/><br/>
       
<asp:LabelID="lMessage"runat="server"></asp:Label><br/>
       
       
<p>Page generated at <asp:PlaceHolderID="PlaceHolder1"runat="server"><%= DateTime.Now.ToString("hh:mm dd/MM/yyy") %></asp:PlaceHolder></p>
   
</div>
   
</form>
</body>
</html>

关联的CS代码:

以下为引用的内容:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

namespace SEOViewStateAdapterTest
{
   
publicpartialclass _Default :System.Web.UI.Page
   
{
       
protectedvoid Page_Load(object sender, EventArgs e)
       
{
           
if(!Page.IsPostBack){
                ViewState
["previousMessage"]= txtMessage.Text;
           
}
       
}

       
protectedvoid bSaveMessage_Click(object sender, EventArgs e)
       
{
            lMessage.
Text=String.Format("The current message is '{0}'. The previous message was '{1}'", txtMessage.Text, (string)ViewState["previousMessage"]);
            ViewState
["previousMessage"]= txtMessage.Text;
       
}
   
}
}
 

没有使用我们的适配器情况下,在几次 postbacks 后,我们看到网页的HTML代码是这样的

以下为引用的内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
   
<formname="form1"method="post"action="Default.aspx"id="form1">
<div>
<inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"value="/wEPDwUJc01l[...]VwP+cfdSWI6Q=="/>
</div>

<div>

   
<inputtype="hidden"name="__EVENTVALIDATION"id="__EVENTVALIDATION"value="/wEWAwKb4uenCgK/1s7/DwKf8MMPfiUvZtKPSXk//XdxkLooz8QDI0Y="/>
</div>
   
<div>
        Enter a message:
<br/>
       
<inputname="txtMessage"type="text"value="Message 2"id="txtMessage"/><br/>
       
<inputtype="submit"name="bSaveMessage"value="Save Message"id="bSaveMessage"/><br/>
       
<spanid="lMessage">The current message is 'Message 2'. The previous message was 'Message 1'</span><br/>
       
       
<p>Page generated at 08:13 04/12/2008</p>
   
</div>
   
</form>
</body>
</html>

使用我们的适配器情况,在几次 postbacks 后,我们看到网页的HTML代码是这样的。看,视图数据代码被移到底部啦。

以下为引用的内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
   
<formname="form1"method="post"action="Default.aspx"id="form1">
<div>
<inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"value=""/>
</div>

<div>

   
<inputtype="hidden"name="__EVENTVALIDATION"id="__EVENTVALIDATION"value="/wEWAwL+raDpAgK/1s7/DwKf8MMPyF7nqN1AbwNwFBq8OAjEAQorsyo="/>
</div>
   
<div>
        Enter a message:
<br/>
       
<inputname="txtMessage"type="text"value="Message 2"id="txtMessage"/><br/>
       
<inputtype="submit"name="bSaveMessage"value="Save Message"id="bSaveMessage"/><br/>
       
<spanid="lMessage">The current message is 'Message 2'. The previous message was 'Message 1'</span><br/>
       
       
<p>Page generated at 08:11 04/12/2008</p>
   
</div>
   
<inputtype="hidden"name="__SEOVIEWSTATE"id="__SEOVIEWSTATE"value="/wEPc01lc3[...]CdNY6AtgigHvU="/></form>
</body>
</html>

为了使用的适配器,您必须添加一个引用,并添加一个名为SEOViewStateAdapter.browser (文件的名称并不重要。扩展名需要是相同的。或者也可以合并的内容另一个文件如果您已经有一个)到App_Browsers文件夹中。该文件应为:

以下为引用的内容:
<browsers>
   
<!-- use the adapters for all browsers -->
   
<browserrefID="Default">
       
<controlAdapters>
           
<!-- ths adapter is used to save the view and control state at the bottom of the form so the page is more friendly to search engines -->
           
<adaptercontrolType="System.Web.UI.Page"adapterType="Manu.Web.Adapters.SEOFriendlyViewStatePageAdapter, SEOViewStateAdapter"/>
       
</controlAdapters>
   
</browser>
</browsers>

当你还不是很明白讲的是文章内容的时候,你可以下载下面的代码来看。

SEOViewState.zip

相关阅读:

Asp.Net程序员与SEO - Viewstate优化