2012-06-12 35 views
4

this question类似我正在使用自定义VirtualPathProvider来检索嵌入在dll中的视图。如果我不把@inherits System.Web.Mvc.WebViewPage对我的看法,我得到这个错误:使用自定义VirtualPathProvider加载嵌入视图,继承自定义WebViewPage

The view at '~/Views/Home/Index.cshtml' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>. 

我使用的是从WebViewPage继承的自定义BaseViewPage。在我开始使用此自定义VirtualPathProvider之前,在web.config中设置新的基本页面。现在,如果我尝试在@inherits My.BaseViewPage的页面上继承我的自定义类,则会得到与上面相同的错误。

为完整起见,我将添加该页面并开始编译,如果我从WebViewPage继承,但因为代码期待以从BaseViewPage有属性,它抛出一个错误。

回答

2

事实证明,问题与我使用的视图引擎有关。为了让VirtualPathProvider正常工作,我用自定义的视图引擎替换了我需要的视图位置。我意外地从WebFormsViewEngine继承而不是RazorViewEngine,这就是为什么我一直得到的错误是为ViewPage而不是WebViewPage。现在,这一切都已经整理出来,我的自定义基本视图页面工作得很好。

+0

啊 - 很高兴我找到了这个答案! :) – Karan

1

嗯...是否有可能基类它不能正确解析你的DLL?

如果是这种情况,你需要做的是在......(从内存中去)上添加一个自定义程序集/类型解析器处理程序AppDomain.AssemblyResolve - 在该处理程序中,您需要获取适当的类型从你的DLL,并返回。

不幸的是 - 在我的手机上,所以研究能力是有限的。

+0

感谢您的回答。我几乎走了这条路线,但[解决方案](http://stackoverflow.com/a/11057293/216553)原来是一个简单的PEBKAC实例。 – ashanan

相关问题