1

根据一些消息来源(包括这个),当使用母版页时,页面Load发生在母版页之前Load

当我在页面中分配Page.Title一个值时,Load它会起作用。

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

在所有情况下,当我Response.Write(Page.Title)稍后在母版页中时Load,它都是空的。

我在这里错过了什么?

编辑(一些代码):

默认.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在两者的功能中加上几条相似的线条。他们都出来空白。

4

2 回答 2

1

母版页的行为类似于页面上的子控件:母版页 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";
}
于 2012-10-09T10:18:11.140 回答
0

我最终改用了Page.Header.Title。有用。

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

于 2012-10-17T06:55:24.067 回答