簡単な答えは PreRender ですが、マスター ページの一部のロジックをビジネス オブジェクト/クラスに移動することでメリットが得られるように思えますか? 相互に依存する異なるマスター ページを持つことは、おそらく最良のアイデアではありません。データをグローバルに利用できるようにする必要がある場合は、ビジネス クラスにロードし、作成されたデータを適切な期間だけキャッシュします (要求だけが HttpContext.Items を使用する場合)。
その設定に固執する必要がある場合は、マスターページ階層を介して呼び出すオプションもあります。これにより、ルートマスター (最上位) がオプション/データを OnInit で使用できるようになります。これを必要とする他のものはすべて呼び出すことができます。これは、指定されたページ階層内のすべてのマスターページをループし、必要なタイプの最初のインスタンスを返すメソッドです。
/// <summary>
/// Iterates the (potentially) nested masterpage structure, looking for the specified type.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="currentMaster">The current master.</param>
/// <returns>Masterpage cast to specified type or null if not found.</returns>
public static T GetMasterPageOfType<T>(MasterPage currentMaster) where T : MasterPage
{
T typedRtn = null;
while (currentMaster != null)
{
typedRtn = currentMaster as T;
if (typedRtn != null)
{
return typedRtn; //End here
}
currentMaster = currentMaster.Master; //One level up for next iteration
}
return null;
}
使用するには:
Helpers.GetMasterPageOfType<GlobalMaster>(this.Master);