设置页面的标题

时间:2009-12-29 04:08:34

标签: c# asp.net html

我有一个使用母版配置的ASP.NET应用程序。我想做的是两件事。

  1. 如何在子页面中以编程方式设置标题(如<title></title>标签中的文字?

  2. 如果子页面未设置标题,我希望母版页自动检测并设置默认标题。

  3. 任何帮助都将不胜感激。

6 个答案:

答案 0 :(得分:5)

您可以让您的网页继承自定义网页

public abstract class CustomPage : Page 
{ 
   public virtual string PageTitle {get{return String.Empty;}}
}

然后,在您的MasterPage的Page_Load中,执行(不记得MasterPage.Title是否存在,或者您是否必须执行Page.Title,这将起作用,因为两个对象都是Page对象):

   if(Page is CustomPage) {    
      this.Page.Title = ((CustomPage)Page).PageTitle;
   } else {
      this.Page.Title = "Default Title";
   }

然后,当您创建一个Page,例如CustomerManager页面时:

public partial class CustomerManager : CustomPage
{
   public override string PageTitle { get{return "Customer Manager"; }}
}

这样,您的MasterPage与使用CustomPage不是100%绑定(创建普通Pages不会引发错误)。而且,如果您使用CustomPage对象,那么您已经完成了设置!

答案 1 :(得分:2)

我所做的与Jim Schubert的基本相同。我确实做了一个小改动,在MasterPage的PageLoad中,我会做一个有条件的检查,如下所示:

if(Page is CustomPage) {
    var cp = (CustomPage)Page;

    this.Title = (String.IsNullOrEmpty(cp.PageTitle)) ? 
        "Master's Default Title" : 
        cp.PageTitle;
}

这会解决你问题的第2点,这样你的自定义页面就不需要指定标题,但只能返回String.Empty。

(原谅如果语法不完全正确,VB就是我的母语。)

答案 2 :(得分:1)

  1. 对于您的第一个问题,这是您正在寻找的http://www.devasp.net/net/articles/display/852.html
  2. 关于第二个问题,http://delphi.about.com/cs/adptips2004/a/bltip0304_2.htm

答案 3 :(得分:0)

在主页面标记中,执行以下操作:

<head runat="server" id="hd">
  <title></title>
</head>

然后,在代码后面(假设AutoEventWireup="false"):

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    if (String.IsNullOrEmpty(this.mhd.Title))
        this.hd.Title = "Master Title";
}

然后在您的页面中,您可以声明性地设置标题:

<%@ Page Title="Page Title" . . . %>

或以编程方式:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    this.Title = "Page Title";
}

答案 4 :(得分:0)

第一个问题不应该:

 Protected void Page_Load(object sender, EventArgs e)
{
      Page.Title = "Title";   
}

对于每个子页面,诀窍?

答案 5 :(得分:0)

你可以在masterpage的标题处添加一个contenttemplate,然后在继承自masterpage的aspx页面上添加一个contentplaceholder,然后在aspx的pageload中你可以设置标题:

page.title = "my title"

要回答第二部分,您可以简单地将标题中的默认标题放在母版页上,这样如果您没有以编程方式设置它,那么它将保持不变。