我正在开发一个应该支持模块的 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,我已经决定将其用于 IOC!