カスタム ビュー エンジンを使用して、現在の HttpContext に関連付けられているテーマに基づいてビューの検索場所を動的に追加することで、アプリケーションにテーマ サポートを追加しようとしています。
これは、場所が順番に検索され、関連するテーマ フォルダーにビューが存在する場合はそれが使用されるため、未加工のビューでは非常にうまく機能します。
ただし、通常は少なくとも 3 レベルの深さのネストされたレイアウトを多用します(そのため、現在のビューのレイアウトだけを書き換えてもうまくいきません)。アプリケーションのルートからのパス。
たとえば、ビューに次のものが含まれているとします。
@{ Layout = "~Views/Shared/OneColumn.cshtml"; }
私は次のようなものを実装できることを知っています:
@{ Layout = ThemeHelper.GetLayoutPath("OneColumn.cshtml"); }
しかし、可能であれば、私がむしろやりたいことは次のとおりです。
@{ Layout = "OneColumn.cshtml"; }
そして、ビューエンジン、または拡張ポイントに、メインビューに適用されるのと同じルールを使用して、それを最適な一致に解決させます。
何か案は?