モジュールをサポートする必要がある mvc3 プロジェクトに取り組んでいます。たとえば、MVC3 コア プロジェクトと MVC3 モジュール プロジェクト (MyModule) があります。
ここで、コア プロジェクトの MVC3 モジュール プロジェクトからビューを読み込んで表示したいと考えています。カスタムの VirtualPathProvider クラスと、コア プロジェクト以外の場所からビューをフェッチする VirtualFile クラスを作成しました。
どういうわけか、次のエラーが表示されます。CS0103: The name 'ViewBag' does not exist in the current context.
私がやっていることは、コア プロジェクトの AssemblyInfo クラスで次のコード行を使用して、コア プロジェクトのモジュール プロジェクトからアセンブリをロードすることです。
[assembly: PreApplicationStartMethod(typeof(ModuleLoader), "Init")]
ModuleLoader クラスは DLL をフェッチしBuildManager.AddReferencedAssembly
、アセンブリを追加するために使用します。
に移動して、MyModuleController.cs のアクション メソッドを呼び出すことができるようになりましたhttp://localhost/MyModule
。MyModuleController.cs の Index ActionResult メソッドで、次のようなビューを返します。
return View("~/Modules/MyModule/Index.cshtml");
VirtualPathProvider は、パスが ~/Modules/ で始まるかどうかを確認し、モジュール プロジェクトからビュー (MyModule -> Views -> Index.cshtml) を取得します。
今、エラーを検索し、欠落している Web.config ファイルについて読みましたが、完全な MVC3 Web プロジェクトであるため、モジュール プロジェクトにすべてが含まれています。
アセンブリからの埋め込みビューの読み込みについてよく読みましたが、上記で説明したことは可能ですか?
前もって感謝します!
編集:
Griffin-MvcContrib 方式を採用し、そのプラグイン システムを使用することにしました。これは、私が必要とするすべてのものを提供しているように見えます。さらに、Autofac を使用しています。