我正在玩一个将MVC网站划分为几个程序集(遇到一些issues earlier)。
现在我几乎所有工作都在运行,得到了主要的MVC项目,可以在任何可以找到的外部程序集中加载。外部组件基本上是外部区域。当我把它和视图和web.config复制到主站点区域文件夹时,一切正常。现在,该文件夹很可能在一段时间后开始变得有点臃肿,所以我想我会尝试在视图中添加区域组件中的资源,看看它是如何工作的。
创建了我自己的VirtualPathProvider
和我自己的VirtualFile
,用HostingEnvironment
注册了他们,认为一切都很顺利。事实证明它只使用在第一次加载时添加到VirtualPathProvider
的{{1}},而不是HostingEnvironment
下面的{_}}加载..好的,找到了几个你怎么样的例子可以通过实施您自己的ViewEngine
来使用您自己的VPP来解决这个问题。但是,这似乎不是MVC 3的可行解决方案..
事实证明,ViewEngine
和RazorViewEngine
都没有实现其中的两个“关键功能”WebFormViewEngine
和FileExists
。这些都是从IsValidPath
继承的,你知道吗?这些方法标记为BuildManagerViewEngine
..
任何使用过MVC 3尝试过此操作的人都可能会朝着正确的方向推动我?我一直在盯着MVC 3来源很长一段时间,但我看不出有任何办法这样做..
答案 0 :(得分:1)
现在我感觉有点愚蠢,似乎我太晚加载了VPP ..它在Application_Start
,但是当我把它移到我的PreApplicationStartMethod
时,ViewEngine
使用它1}}。 (因此似乎不需要实现ViewEngine
,我们!)
现在的问题是,当我尝试使用存储为资源的View时,我可以下载它而不是将其渲染..但是这与此有所不同!