1

いくつかの情報源(これを含む)によると、マスターページを使用する場合、ページ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加えて、両方の機能全体でいくつかの同様の行。それらはすべて空白で出てきます。

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 に答える