繁体   English   中英

设置页面标题

[英]Setting title of a page

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

  1. 如何以编程方式在子页面中设置标题(如<title></title>标记中的文本一样),并且,

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

任何帮助,将不胜感激。

您可以让页面从自定义页面继承

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";
   }

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

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

这样,您的母版页就不会100%绑定到使用CustomPage(创建普通页面不会引发错误)。 而且,如果您使用CustomPage对象,就一切准备就绪!

我所做的基本上与吉姆·舒伯特(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是我的母语。)

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

在母版页标记中,执行以下操作:

<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";
}

对于您的第一个问题不应该:

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

对于每个子页面,有技巧吗?

您可以在母版页眉的顶部添加一个contenttemplate,然后在从该母版页继承的aspx页上添加一个contentplaceholder,然后在aspx的pageload中设置标题:

page.title = "my title"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM