ゲートウェイページでASP.NETテーマを設定できるようにしたいのですが、これにより、パートナーIDなどに基づいてテーマが決定されます。セッションでテーマ名を貼り付けて、必要に応じてそこから取得すると思います。
このコードを1か所に配置するのに適切な場所を見つけるのに苦労しています。
テーマを設定できるグローバルな場所が見えないようです。ページごとに設定する必要があります。
MSDNで説明されているように、ページのPreInit関数でThemeプロパティを割り当てることができます。
Protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{
case "Blue":
Page.Theme = "BlueTheme";
break;
case "Pink":
Page.Theme = "PinkTheme";
break;
}
}
だから私は大丈夫だと思った-私は私のマスターページでそれをするだけだ。残念ながら、これとまったく同じコードをマスターページにコピーすることはできません。だから私は思った-うーん、マスターページはこのイベントを使用しないかもしれない。これは本当であることがわかります。
私は本当にこのテーマコードをすべてのコンテンツページに配置する必要はありません。それは完全に愚かなようです。しかし、私はまだ別の方法を見つけることができません。MSDNでは、テーマをページに適用する2つの方法(web.configまたはPage.Theme)についてのみ説明しています。
Pageのサブクラスを作成し、すべてのページでそのページをサブクラス化し、そのサブクラスのPreInitをオーバーライドする必要がありますか?MSがすべてのコンテンツページにプログラムでテーマを設定することをMSが本当に期待しているとは思えないので、私は何かが欠けているに違いないと思います。