Page.Title与主页不符合预期

时间:2012-10-09 10:07:35

标签: .net master-pages page-title

根据一些来源(including this one),在使用母版页时,页面的Load发生在母版页Load之前。

当我在页面Page.Title中为Load分配值时,它可以正常工作。

如果我在母版页Page.Title += "J"中写Load,则标题变为J,无论之前是否分配过值。

在所有情况下,当我Response.Write(Page.Title)稍后在母版页Load中显示为空时。

我错过了什么?

编辑(部分代码):

的Default.aspx

Page.Title = "Title";

母版页

Page.Title += " - More title";
.
.
.
Response.Write("TITLE: " + Page.Title);

我在窗口中显示TITLE:,在浏览器标题中显示- More title

编辑(一些调试):

我将以下内容添加到我的aspx和母版页中:

protected void Page_Init(object sender, EventArgs e)
{
    Response.Write("<!--DEBUG-" + (debug_counter++) + "- TITLE: " + Page.Title + "-->\r\n");
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
    Response.Write("<!--DEBUG-" + (debug_counter++) + "- TITLE: " + Page.Title + "-->\r\n");
}
protected void Page_Render(object sender, EventArgs e)
{
    Response.Write("<!--DEBUG-" + (debug_counter++) + "- TITLE: " + Page.Title + "-->\r\n");
}
protected void Page_SaveStateComplete(object sender, EventArgs e)
{
    Response.Write("<!--DEBUG-" + (debug_counter++) + "- TITLE: " + Page.Title + "-->\r\n");
}

在两者的Load函数中加上几条相似的行。他们都是空白的。

2 个答案:

答案 0 :(得分:1)

页面上的主页behave like child controls:主页面Init事件发生在页面Init和Load事件之前,主页面Load事件发生在页面Init和Load事件之后。

我最近回答了一个问题,即从MasterPage设置页面标题的最佳位置:https://stackoverflow.com/a/10525258/284240

  

您甚至可以使用SaveStateComplete事件,该事件应该是您可以更改标题的最新位置:

protected void Page_PreRenderComplete(object sender, EventArgs e)
{
    Page.Title = "late title";
} 

protected void Page_SaveStateComplete(object sender, EventArgs e)
{
    Page.Title = "very late title";
}

答案 1 :(得分:0)

我最终使用了Page.Header.Title。它有效。

here我明白他们应该是一样的。显然不是。