ASP.NET使用母版页统一网页标题

GD Star Rating
loading...

在做网页的时候给每个网页设置一个合理的标题是很有必要的事情,而做一个网站的时候需要将所有的标题的格式统一起来,比如将所有网页的标题统一为“XX页面 | XX网站”。

我在用VS2005做的时候开始没用母版页,后来用母版页的时候发现改内容页的标题其实挺麻烦的,因为每个内容页都要设置标题,而每个标题中都要有网站的名字。如果手工给每个内容页加上该内容页的标题,再加上网站名字,岂不是很麻烦?好在我们用的是动态语言,至少网站名字可以在母版页中直接统一起来。

下面说下我用的两种方法改写网页标题。

1、所有的网页标题设置为“XX页面 | XX网站”。

这种方法很简单,只用在母版页的xx.aspx.cs文件中写上这样一句代码(BasePage.GetSiteName()为获取网站标题的方法)

Page.Header.Title += " | " + BasePage.GetSiteName();//设置前台页面所有内容页标题

然后在每个内容页中加上内容页的标题就OK了。

2、在母版页中改写所有内容页标题

这样做的好处是如果要修改标题的内容页有很多,那么只用修改母版页就OK了,内容页中的标题可以不用管。这种方式的原理是先判断是哪个内容页请求的母版页,然后根据内容页的文件名来强制改写内容页的标题。

这种方式下可以用if else判断,也可以用switch case来做

A、如果只是首页的格式不同(比如首页的标题是“欢迎光临XX网站”,而其他页面都是“XX页面 | XX网站”)

那么用母版页中xx.aspx.cs用这段代码,其中ContentBox为在母版页中的一个ContentPlaceHolder控件。

string requestContentType = this.ContentBox.Page.GetType().ToString();//获取请求的内容页类型,格式如ASP.文件名_aspx
if (requestContentType == "ASP.index_aspx")
{
    Page.Header.Title = "欢迎光临" + BasePage.GetSiteName();
}
else
{
    Page.Header.Title += " | " + BasePage.GetSiteName();//设置前台页面所有内容页标题
}

这段代码先判断内容页是不是首页(所有aspx文件名都被转换成形如“ASP.文件名_aspx”,首页文件名为indxe.aspx ,所以就被转成 ASP.index_aspx),然后根据结果改写标题。

B、如果大部分网页的标题格式都不同或需要在母版页改写所有内容页标题

string requestContentType = this.ContentBox.Page.GetType().ToString();//获取请求的内容页类型,格式如ASP.文件名_aspx

switch (requestContentType)
{
    case "ASP.A_aspx" :
    {
        Page.Header.Title = "A的网页标题";
        break;
    }
    case "ASP.B_aspx":
    {
        Page.Header.Title = "B的网页标题";
        break;
    }
    case "ASP.C_aspx":
    {
        Page.Header.Title = "C的网页标题";
        break;
    }
}

当然应该还有别的方法来改写网页标题,这只是我目前用到的两种,也不一定是最好的。

已有7条评论 发表评论

  1. lee /

    我刚好需要这个功能,但我在Master.cs的里写了:
    protected void Page_Load(object sender, EventArgs e)
    {
    Master.Page.Header.Title += ” | 网站名称”;
    }
    确并没有效果。想请你帮忙看一下。

    GD Star Rating
    loading...
    1. lee /

      也照文章内容写了:Page.Header.Title += ” | 网站名称”;
      一样无效果,我想请作者说一下,这个是写是写在Master.cs的Page_Load事件里,有什么需要注意的?

      GD Star Rating
      loading...
      1. zenoven / 本文作者

        我的感觉是写的代码没有被执行,检查下内容页是否是用的改写标题的模板页,可以设置断点调试下,还有我已经有几年没搞ASP.NET了,现在电脑上面也没有装VS,没法帮你调试

        GD Star Rating
        loading...
        1. lee /

          非常感谢你的及时回复,因为上述方法无效,我只好在内容页全部设置了。
          代码肯定是执行的,可能是执行顺序的问题。由于项目紧,没有深入研究。

          GD Star Rating
          loading...
  2. 李支锋 /

    Master.Page.Header.Title = “fdfd”;

    GD Star Rating
    loading...
  3. mice /

    沙发沙发…发现你把广告位去了 :(6):

    GD Star Rating
    loading...
    1. 自由人 / 本文作者

      正在做新的广告位啊

      GD Star Rating
      loading...

发表评论