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信息了.

<head runat="server">
    
<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属性.  

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="About.aspx.cs" Inherits="About" Title="关于本系列的信息" %>

    3:在后台代码中通过Page.Title="Something" 或者Page.Header.Title="Infomation"设置.

 

后台设置Title

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.

public class BasePage : System.Web.UI.Page
{
}

   无论在什么时候,请求一个ASP.NET页面都要经过一系列的步骤(Page Life),并最终生成HTML.我们可以通过Page Class的OnEvent方法去跟踪.我们的Base Page将通过LoadComplete方法自动设置Title信息.我们只需要重载OnLoadComplete method,通过重写.我们将自动的把页面的名字设置为Page的Title.

protected override void OnLoadComplete(EventArgs e)
{
    
// 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 系列" />

       我们还可以通过程序去动态的添加这些信息.

  

// Programmatically add a <meta> element to the Header
HtmlMeta keywords = new HtmlMeta();
keywords.Name 
= "keywords";
keywords.Content 
= "master page,asp.net,tutorial";

Page.Header.Controls.Add(keywords);

    这篇文章我们简单介绍了如何呈现更丰富的Header信息

   下一篇我们将更深入的介绍Master Page.

 

 

 

posted @ 2008-08-11 13:34  莫贝特(MBetter)  阅读(1316)  评论(3编辑  收藏  举报