Mastter Page 中定义Title,Meta Tags 和其他的Html Headers 其他信息(Master Pages 系列之三)
前两篇文章我们简单的讲了如何创建Master Page,如何为Master Page 添加多个ContentPlaceHolder以及如何定义ContentPlaceHolder的显示与否.本文主要介绍Master Page页的Header部分.如何定义功能丰富的header信息.
我们知道在HTML中Header部分可以定义:Search信息,Meta信息,外部的JS,以及CSS的链接文件.而这些信息有可能是整个网站公用的.像CSS文件.这样你可以很容易通过CSS样式改变整个网站的布局和样式.
在VS2008中你创建Master Page的时候,会自动在Header部分添加一个ContentPlaceHolder,但是在VS2005中并没有.但是我们可以从下面的代码中看到Header 的Attribute中添加了Runat="server",这样你就可以在后台代码中处理Header信息了.
<title>Master Page</title>
<link href="Styles.css" rel="stylesheet" type="text/css" />
</head>
Step1:设置Page的Title信息.
我们很多人在进行网站设计,开发的过程中,忘记了对网站每个Page的Title进行设置,所以无论访问者访问哪个页面,Page的Title都是Untitled Page,然而如果访问者能从Page的Title中获取这个页面的信息是多么好的一件事情.而我们要做的就是为每个Page设置与内容有关的Title,让访问者见名知意.
ASP.NET可以通过下面的几种方式设置页面的Title:
1:直接放个放在<Title></Ttitle>中设置.
2:在<% Page %>中设置Title属性.
3:在后台代码中通过Page.Title="Something" 或者Page.Header.Title="Infomation"设置.
Step 2:自动设置Title信息
在.NET中.所有的页面都继承于System.Web.UID命名空间的Page class.但是Page Class仅仅定义了ASP.NET Page需要的很少的功能但同样也提供了很多重要的属性(像IsPostBack,IsValid,Request, and Response).但是很多时候我们的web 页面需要一些额外的功能或者特性.一个常用的做法是创建一个继承自Page类的自定义类,它包括一些自定义的功能.这样就可以你创建页面时,继承这个自定义类,就可以获得你想要的自定义的功能.
在这步中,我创建了一个根据页面的名字自动设置Page Title信息的自定义类
创建一个Base Page Class
很简单,直接添加一个BasePage.cs(继承PageClass),如下图
由于所要做的Net页面都将继承BasePage.cs,所以我们的BasePage Class 要继承自Page的Class.
{
}
无论在什么时候,请求一个ASP.NET页面都要经过一系列的步骤(Page Life),并最终生成HTML.我们可以通过Page Class的OnEvent方法去跟踪.我们的Base Page将通过LoadComplete方法自动设置Title信息.我们只需要重载OnLoadComplete
method,通过重写.我们将自动的把页面的名字设置为Page的Title.
{
// Set the page's title, if necessary
if (string.IsNullOrEmpty(Page.Title) || Page.Title == "Untitled Page")
{
// Determine the filename for this page
string fileName = System.IO.Path.GetFileNameWithoutExtension(Request.PhysicalPath);
Page.Title = fileName;
}
base.OnLoadComplete(e);
}
别忘记把页面的集成基类System.Web.UI.Page,改成BasePage,这样我们就可以看到效果了 ,如下图
Step 3:设置Header的其他信息
我们前面介绍了设置Title的几种方法,这里我们将介绍如何设置Header中的其他信息.比如<meta>,<Link>等等.
<Meta>通过下面的形式简单的描述页面的信息
<meta name="description" content="言行一MasterPage 系列" />
我们还可以通过程序去动态的添加这些信息.
HtmlMeta keywords = new HtmlMeta();
keywords.Name = "keywords";
keywords.Content = "master page,asp.net,tutorial";
Page.Header.Controls.Add(keywords);
这篇文章我们简单介绍了如何呈现更丰富的Header信息
下一篇我们将更深入的介绍Master Page.