在构建网站时,站点地图是一个非常有用的工具,它不仅能够帮助用户导航,还能用于生成网页的标题。如果还没有使用站点地图,那么创建一个站点地图将是一个提升网站导航体验的好方法。即使已经在使用站点地图,也可能不知道它还有另一个用途:通过编程方式修改HTML的
ASP.NET站点地图包含了网站页面的层次结构布局,并且为每个页面提供了标题(title)和描述(description)属性。站点地图最常见的用途是生成网站的“树状视图”布局,或者生成“面包屑”导航,就像鼠标指针在下面的图片中所指向的那样:
站点地图中的title属性用于导航链接,而description属性(如果提供)则在鼠标悬停时显示为工具提示。既然已经在站点地图中提供了这些信息,为什么不利用它们来设置网页标题呢?在上面的图片中,可以看到已经这样做了。
搜索引擎如谷歌在返回的列表中会以加粗的形式显示网页的确切标题。这些加粗的标题是吸引观众眼球并促使他们点击网站的关键。因此,确保标题足够吸引人!此外,谷歌在排名列表时会高度重视页面标题中的关键词。再次强调,选择好的标题至关重要!
要开始这个过程,网站应该使用.master页面(或其他方法),以便HTML的
和要程序化地访问和修改页面标题,必须使用ASP.NET的header控件:
<head runat="server" />
在母版页中,还指定了一个默认标题,用于所有网页标题:
<head runat="server">
<title>
Tek4 Innovations
</title>
...
</head>
修改
VB
Page.Title = "My Web Page Title"
覆盖Page_Load方法
在同一个母版页中,覆盖了Page_Load方法,以将站点地图信息追加到页面标题中,并且有一些巧妙的处理:
C#
<script runat="server">
void Page_Load(Object sender, EventArgs e) {
// Set page title based upon SiteMap Description or Title
SiteMapNode currentNode = SiteMap.CurrentNode;
if (currentNode != null) {
String subTitle = currentNode.Description;
if (subTitle.Length == 0) subTitle = currentNode.Title;
if (subTitle.Length != 0 && subTitle != "Home")
Page.Title += " — " + Server.HtmlEncode(subTitle);
}
}
</script>
代码将特定页面的标题追加到
使用站点地图的问题在于必须不断更新站点地图,以确保每个页面都被列出。如果忘记列出一个页面,那么突然之间就有一个没有标题的页面了!更糟糕的是,如果使用站点地图进行导航,当浏览到该页面时,导航菜单会消失!
为了简化站点地图的维护——并弥补忘记的时候——创建了一个SiteMapProvider类,它为未列出的页面动态生成站点地图条目,并从“父”页面“继承”描述。因此,如果忘记将“Widgets”页面添加到站点地图中,但它在“产品”页面目录中,那么页面仍然会收到页面标题,“产品”,这比什么都没有要好。
ScionSiteMapProvider