该视图必须从WebViewPage或WebViewPage <TModel>派生
我遵循贾斯汀Slattery的插件架构教程,并尝试适应Razor,而不是WebForm视图。
其他一切(控制器,插件程序集等)似乎都没问题。 但是,我无法使embedded的Razor视图正常工作。 当我尝试浏览到“HelloWorld / Index”时,出现以下错误:
The view at '~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml' must derive from WebViewPage or WebViewPage<TModel>.
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262
引发exceptionSystem.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262
如果需要,我可以包含完整的堆栈跟踪。
任何人都可以build议我可能做错了什么?
您可以检出以下更适合Razor的博客文章 。
但是为了回答你的问题,因为你现在正在从一个非标准的位置提供视图,所以不再需要应用~/Views/web.config
文件,并且允许你指定你的razor视图的基本types。 因此,您可能需要在每个razor视图的顶部添加以下内容:
@inherits System.Web.Mvc.WebViewPage @model ...
注:我有一个非常类似的问题,并不得不终于追查到,我是唯一的MVC 4.0.0.0开发人员在他们的解决scheme链接。
其他人都正确地引用了3.0.0.0,并且正在构build/运行,没有错误。
TL; DR确保您的引用与开发组的其他部分相同。
我有一个相同的问题,因为我没有提交包含剃刀库的包文件夹。 然后我添加了包,它的工作,但重build时,它打破了。 然后closuresnuget自动运行,现在它工作正常。 在我的情况下,nuget搞砸了。
刚刚得到这个错误,当更新一个旧的MVC3项目到版本4,对我来说,解决scheme是删除<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
中的属性appliesTo="v2.0.50727"
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
部分。
我想分享我的痛苦..网站本地工作正常,但是当我发布到客户的IIS,它是抛出这个错误。 所有的web.config文件(root和/ Views)与网站的工作副本完全匹配。
其中一个视图(logon.cshtml)有不一致的行结尾,我没有点击yes来修复它在我的Windows机器上。
点击是不一致的行结束对话框,并发布logon.cshtml视图为我修复它。
当我试图添加MVC脚手架(特别是Views
文件夹)到一个Web API项目时,我得到了这个错误。 达林·季米特洛夫的回答是:
不再有适用的
~/Views/web.config
文件,并且允许您指定razor视图的基本types
在对这个答案的评论中, joelnet说 :
我能够将〜/ Views中的web.config复制到我的备用位置来解决我的问题。
保罗·奥斯特说 :
如果您在使用@ joelnet的评论中解决问题时遇到问题,请尝试清理并重build项目。
这些提示帮助我找出解决办法。
首先,我从同一个解决scheme中另一个项目的Views
文件夹复制Web.config
到我的新的Views
文件夹。 我将主namespace
标记重namespace
为与新项目相匹配,并且在得到错误之后移除了另一个不需要的<add namespace="..." />
。 然后,我触发了一个构build(只有一个正常的构build,我不需要清理和重build),我能够加载我的新视图没有错误。
安装软件包:Install-Package Microsoft.AspNet.WebPages