4

此问题类似,我正在使用自定义 VirtualPathProvider 来检索嵌入在 dll 中的视图。如果我不@inherits System.Web.Mvc.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 的属性。

4

2 回答 2

2

事实证明,问题与我使用的视图引擎有关。为了让 VirtualPathProvider 正常工作,我用一个添加了我需要的视图位置的自定义视图引擎替换了视图引擎。WebFormsViewEngine我不小心从而不是继承了RazorViewEngine这就是为什么我一直得到的错误是 forViewPage而不是WebViewPage. 既然这一切都已经解决了,我的自定义基本视图页面就可以正常工作了。

于 2012-06-15T19:50:29.550 回答
1

嗯......它是否可能无法从您的 dll 正确解析的基类?

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

不幸的是,这纯粹是一种猜测——在我的手机上,所以研究能力有限。

于 2012-06-15T18:29:19.403 回答