web-dev-qa-db-ja.com

マスターページを動的に設定する方法は?


ユーザーIDに応じて同じページに異なるマスターページを設定する必要があるという要件があります(つまり、あるユーザーには1つのマスターページを設定し、別のユーザーには別のマスターを設定する必要があります)。任意のページのマスターページを動的に?助けてください...

13
Amol Kolekar
void Page_PreInit(Object sender, EventArgs e)
{
    this.MasterPageFile = "~/MyMaster.master";
}

説明:マスターページをコンテンツページに動的に添付できます。マスターページとコンテンツページはページ処理の初期化段階でマージされるため、その前にマスターページを割り当てる必要があります。通常、PreInitステージでマスターページを動的に割り当てます。

27

MSDNのこの記事に注意してください:

http://msdn.Microsoft.com/en-us/library/c8y19k6h.aspx

void Page_PreInit(Object sender, EventArgs e)
{
    this.MasterPageFile = "~/NewMaster.master";
}
6
Joshua

ページの MasterPageFile プロパティを設定することでできます。ただし、 PreInit イベントの後に呼び出された場合、これはInvalidOperationExceptionをスローします。 ASP.NETページのライフサイクル をご覧ください

MasterPageFileプロパティは、PreInitイベントでのみ設定できます。 PreInitイベントの後にMasterPageFileプロパティを設定しようとすると、InvalidOperationException例外がスローされます。 MasterPageFileプロパティが無効な場合、ページライフサイクルの後半でタイプHttpExceptionの例外がスローされますが、プロパティがPreInitイベントに設定されている場合は例外はスローされません。

2
Connell