与 this question类似,我使用自定义VirtualPathProvider来检索嵌入在dll中的视图.如果我没有在我的视图上放置@inherits System.Web.Mvc.WebViewPage,我会收到此错误: The view at '~/Views/Home/Index.cshtml' must
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的属性.
事实证明,问题与我正在使用的视图引擎有关.为了使VirtualPathProvider正常工作,我将视图引擎替换为添加了我需要的视图位置的自定义引擎.我不小心继承了WebFormsViewEngine而不是RazorViewEngine,这就是为什么我一直得到的错误是ViewPage而不是WebViewPage.现在,这一切都已整理出我的自定义基本视图页面工作得很好.