非常に大きなWebアプリケーションプロジェクトに取り組んでいるときに、 CompilationMode = "Never" @Page属性で一部のページとコントロールをマークすることで、少し新鮮な空気を得ることができると判断しました。これまでのところ、期待どおりに機能していて、それが起こりました。私が説明しようとしているコーナーケースのシナリオは、それをうまく表現するために予期せず動作しました。このシナリオはネストされたマスターページです。
続行する前に簡単なティーザー。トップマスターページをCompilationMode=" Always "としてマークし、その下にある他のすべてのページをCompilationMode = " Never "としてマークすると、どのくらい深くネストできると思いますか?いいえ、無限ではありません。ASP.NETが持つ内部番号です。その2。なんで?-私にはわかりません。賢い人たちが私を教えてくれることを望んでいましたか?
私が話していることを示すために、5つのネストされたマスターページを持つプロジェクトを添付しました:ネストされたマスターページWebアプリケーションテストプロジェクト。
予期せず機能するもう1つのコーナーケース-5つのネストされたマスターページがある場合は、2番目のページをCompilationMode = "Always"に変更し、他のすべてのページをCompilationMode="Never"に変更します。3番目のマスターページが2回適用されていることに気付くでしょう!
私がしていることが間違っているかどうかを理解するのを手伝ってください、または問題を確認してください。
ASP.NETランタイムバージョン:2.0、.NET:3.5
編集:
添付されたプロジェクトでは、すべてのマスターページがCompilationMode=" Never "に設定されています。ASPXページが必要に応じて表示されます。最初のマスター(Site.master)をCompilationMode = "Always"に変更して、私が話していることを確認します。