あなたの痛みが分かります。これに関する問題を約1時間(それ以上ではないにしても)検索しましたが、成功しませんでした。何百ページもある場合、「各ページで PreInit から呼び出すだけ」と言うのは、単純な答えではありません。しかし、その後、各ページで解決策を探すよりも、解決策を探すのに多くの時間を費やしていることに気付きました.
しかし、私は Profile プロパティに基づいて MasterPageFile を設定したかったので、各ページに約 5 行のコードが必要であり、保守性の悪夢でした。とにかく、「同じことを繰り返さないで」ですよね?
そこで、App_Code フォルダー内のモジュールに Extension メソッドを作成して、これをより簡単かつ保守しやすくしました。
Public Module WebFunctions
<System.Runtime.CompilerServices.Extension()> _
Public Sub SetMaster(ByVal page As Page)
Dim pb As ProfileCommon = DirectCast(HttpContext.Current.Profile, ProfileCommon)
If pb IsNot Nothing Then
page.MasterPageFile = pb.MasterPage
End If
End Sub
End Module
そして、各ページの PreInit で、次のように呼び出します。
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
Me.SetMaster()
End Sub