介绍
母板页是asp.Net 2.0中的一个非常强大的特性,但是它却不能提供一个实现最基础的针对搜索引擎优化的方法。如果你想你的web页被搜索引擎收录并提高排名,那么你就需要在每一个页都指定一个title和meta标记。本文将说明如何扩展你的asp.Net页,以使得在使用母板页的时候你可以直接在你内容页的@Page指令中指定你的meta标签的描述和meta标签的关键字
背景
当你要针对搜索引擎优化你的web页的时候,设置页的title标签和页的meta描述是其中最重要的因素之一。<title>和meta标签实际上是在每个页的HTML的<head>部分,下面出示一个Rhinoback online backup的例子。
<html Xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>
Rhinoback Professional Secure Online Backup Services for Small and Medium Business - SMB
</title>
<meta name="description" content="Professional Online Backup Services.
Rhinoback provides robust backup functionality at affordable prices.
Premium features, premium services, low prices. Get the most for
your money with Rhinoback!" />
<meta name="keywords" content="backup, online backup, secure backup, cheap backup,
free backup, offsite backup,inte.Net backup, secure files, offsite data storage,
privacy, security, features, low prices, premium service, remote backup" />
</head>
<body>
<!-- page content -->
</body>
</html>
<title>标签的文本显示在浏览器的顶端。从下面的例子中可以看到<title>在IE中的显示
当你的页被搜索引擎收录的时候,meta描述的文本则在搜索引擎的列表中显示。下面的例子来自google。带下划线的标题的下面的文本就来自页的meta描述标签。如果没有meta描述标签,那你的页在搜索引擎的列表中将显示为你的页上的某一处的文本。指定你的每一个页的描述文本要比把这些事情交给搜索引擎做好的多。
母板页已经被证明是asp.Net 2.0中非常有用的一个特性。本文不是来说明母板页的细节或是如何实现它,因为这样的文章太多了。当我们在母板页中使用了<head>的话,那么母板页下的所有内容页都将自动的包括这个<head>。幸运的是开发人员可以在内容页中直接在@Page指令中修改title属性来修改内容页的title。
<%@ Page Language="C#" MasterPageFile="~/PageTags.master" AutoEventWireup="true" CodeFile="home.aspx.cs" Inherits="home" Title="My home page title" %>
上面的@Page指令说明了这是一个使用了母板页的内容页。如果你要指定meta标签的话,应该在内容页中指定。你可以看到@Page指令中有一个“Description”属性,但是它不能在你的页上创建meta描述标签。事实上,即使你指定了“Description”属性,最后也会被忽略掉而不做任何事的。
我不可能让站点的所有页都使用同一个描述,而且我想给每一页都加一个关键字。我们首先想到的解决办法就是在后置代码中插入我们想要的meta标签到每一个页的<head>里,就像如下的做法
C#
protected void Page_Load(object sender, EventArgs e)
{
HtmlMeta tag = new HtmlMeta();
tag.Name = "description";
tag.Content = "My description for this page";
Header.Controls.Add(tag);
}
VB
Sub Page_Loa