我正在尝试将 MVC 站点分成几个程序集(之前遇到了一些问题)。
现在我几乎所有的东西都在工作,得到了可以加载到它可以找到的任何外部程序集中的主 MVC 项目。外部组件基本上是外部区域。当我将 Views 和 web.config 复制到主站点区域文件夹时,一切正常。现在,该文件夹很可能会在一段时间后开始变得有点臃肿,所以我想我会尝试将视图添加为区域程序集中的资源,看看它是如何工作的。
创建了我自己的VirtualPathProvider
和我自己的,并以一切正常的想法VirtualFile
注册了它们。HostingEnvironment
原来它只使用在第一次加载时VirtualPathProvider
添加的HostingEnvironment
,而不是通过下面的视图加载ViewEngine
。好吧,找到了一些示例,说明如何通过实现自己ViewEngine
的 VPP 来解决这个问题。但是,是的,这似乎不是 MVC 3 的可行解决方案。
事实证明,既没有RazorViewEngine
也没有WebFormViewEngine
实现看起来的两个“关键功能”,FileExists
并且IsValidPath
. 这些都是继承自BuildManagerViewEngine
,你知道吗?这些方法被标记为sealed
..
任何用 MVC 3 尝试过的人,也许可以将我推向正确的方向?我已经盯着 MVC 3 源代码看了很长一段时间了,但我看不出有什么方法可以做到这一点。