根据一些来源(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
函数中加上几条相似的行。他们都是空白的。
答案 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我明白他们应该是一样的。显然不是。