私は、ページを生成するためのメインエンジンとしてMVCを使用してcmsを作成しています。
私はうまくいっていますが、必要に応じて、サイトごとに、場合によってはビューごとに、独自のかみそりテンプレートを作成する機能が必要でした。
私のルールでは、各プロジェクトにはURLにリンクされた一意のコードが必要です。
各プロジェクトサイトのアセットは、場所がプロジェクトに関連する方法で保存されます。
したがって、プロジェクトC0001に関連付けられたアセットはassets\C0001\
、C0002に格納さassets\C0002\
れます。
私がやりたかったのは、物事を整頓するために、そのassets\[ProjectCode]
場所にあるプロジェクトに関連付けられたかみそりのテンプレートを用意することでしたが、問題は、に関するエラーが発生することViewBag not existing in context
です。
したがって、これは機能しません。
Layout = string.Concat("~/assets/",ViewBag.ProjectNumber,"/_Layout.cshtml");
以下はページをレンダリングしますが、
Layout = string.Concat("~/Views/Shared/_",ViewBag.ProjectNumber,"Layout.cshtml");
最初のレイアウトは、ビューの既知の検索領域の外にあるため、レンダリングされないと思いますか?しかし、ファイルがどこにあるかを伝えているので、問題が何であるかわかりませんか?
例2のコードを使用して作業できてうれしいですが、かなりの数のプロジェクトサイトの後で、共有ビューディレクトリが非常にビジーになる可能性があります。
Views
ビューがディレクトリに存在する必要がある理由があるかどうか疑問に思っていますか?