0

PreInit() の HTTPModule を介して設定されたマスターページがあります。幸せな時間!問題は、レイアウトの問題により、いくつかのページで masterpagefile の値をオーバーライドする必要があることです。誰もが最善の方法を知っていますか?

ページに Page_Preinit を追加しようとしましたが、モジュールの PreInit() の前に実行されるため、そこでリセットされてしまいます。ページのコンテキスト変数を更新する必要があるのではないかと考えています(モジュールで分岐する可能性のある masterSetAtPage のようなもの)..それについて何か考えはありますか?

私は VB.Net で作業していますが、C# の例でも問題ありません。

4

1 に答える 1

1

おそらく、現在のコードは、ここで説明されているコードに少し似ています...

http://www.odetocode.com/articles/450.aspx

もしそうなら、PreInit を接続するコードを次のように変更できます...

if (page != null && String.IsNullOrEmpty(page.MasterPageFile))
{
    page.MasterPageFile = "~/Master1.master";
}

そして、独自の page ディレクティブを使用して masterpagefile を設定するページは、「デフォルト」のマスター ページにフックされることを回避します。

これをプログラムで行う必要がある場合は、このコード...

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
    this.MasterPageFile = "cheese.master";
}

...あなたのページのコードビハインドでうまくいくでしょう。明らかに、このコードは、特別な動作が必要なページにのみ追加されます。

于 2009-04-06T20:07:34.533 に答える