ASP.NET MVC 3 RC和自定义ViewEngine允许外部加载的视图

时间:2010-11-22 14:49:44

标签: asp.net-mvc asp.net-mvc-3 viewengine

我正在玩一个将MVC网站划分为几个程序集(遇到一些issues earlier)。

现在我几乎所有工作都在运行,得到了主要的MVC项目,可以在任何可以找到的外部程序集中加载。外部组件基本上是外部区域。当我把它和视图和web.config复制到主站点区域文件夹时,一切正常。现在,该文件夹很可能在一段时间后开始变得有点臃肿,所以我想我会尝试在视图中添加区域组件中的资源,看看它是如何工作的。

创建了我自己的VirtualPathProvider和我自己的VirtualFile,用HostingEnvironment注册了他们,认为一切都很顺利。事实证明它只使用在第一次加载时添加到VirtualPathProvider的{​​{1}},而不是HostingEnvironment下面的{_}}加载..好的,找到了几个你怎么样的例子可以通过实施您自己的ViewEngine来使用您自己的VPP来解决这个问题。但是,这似乎不是MVC 3的可行解决方案..

事实证明,ViewEngineRazorViewEngine都没有实现其中的两个“关键功能”WebFormViewEngineFileExists。这些都是从IsValidPath继承的,你知道吗?这些方法标记为BuildManagerViewEngine ..

任何使用过MVC 3尝试过此操作的人都可能会朝着正确的方向推动我?我一直在盯着MVC 3来源很长一段时间,但我看不出有任何办法这样做..

1 个答案:

答案 0 :(得分:1)

现在我感觉有点愚蠢,似乎我太晚加载了VPP ..它在Application_Start,但是当我把它移到我的PreApplicationStartMethod时,ViewEngine使用它1}}。 (因此似乎不需要实现ViewEngine,我们!)

现在的问题是,当我尝试使用存储为资源的View时,我可以下载它而不是将其渲染..但是这与此有所不同!