我正在关注Justin Slattery's Plugin Architecture tutorial并尝试将其改编为Razor,而不是WebForm Views。
其他一切(控制器,插件程序集加载等)似乎没问题。但是,我无法使嵌入式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
如果需要,我可以包含完整的堆栈跟踪。
任何人都可以告诉我可能做错了什么吗?
答案 0 :(得分:156)
您可以查看更适合Razor的following blog post。
但是要回答您的问题,因为您现在从非标准位置提供视图,因此不再应用~/Views/web.config
文件,并允许您指定剃刀视图的基本类型。因此,您可能需要在每个剃刀视图的顶部添加以下内容:
@inherits System.Web.Mvc.WebViewPage
@model ...
答案 1 :(得分:6)
注意:我遇到了一个非常相似的问题,并且最终要追查到我是唯一一个在其解决方案中链接了MVC 4.0.0.0的开发人员。
其他人都正确引用了3.0.0.0,并且正在构建/运行而没有错误。
TL; DR 确保您的参考文献与开发组的其他参考文献相同。
答案 2 :(得分:1)
我遇到了同样的问题,因为我没有提交包含razor库的packages文件夹。然后我添加了包,它工作但是在重建它打破了。然后我关闭nuget自动运行构建,现在它正常工作。 就我而言,nuget搞砸了。
答案 3 :(得分:0)
今天刚刚将旧的MVC3项目更新到版本4时出现此错误,对我而言,解决方案是删除appliesTo="v2.0.50727"
部分中的属性<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
。
答案 4 :(得分:0)
我想分享我的痛苦..网站在本地工作正常,但是当我发布到客户的IIS时,它抛出了这个错误。所有web.config文件(root和/ Views)都与网站的工作副本完美匹配。
其中一个视图(logon.cshtml)的行结尾不一致,我没有单击是以在我的Windows机器上修复它。
对不一致的行结尾对话框单击是并发布logon.cshtml视图为我修复了它。
答案 5 :(得分:0)
当我尝试将MVC脚手架(特别是Views
文件夹)添加到Web API项目时,出现此错误。 Darin Dimitrov's answer说:
不再适用
~/Views/web.config
文件,并允许您指定剃刀视图的基本类型
在对该答案的评论中,joelnet said:
我能够将web.config从〜/ Views复制到我的备用位置来解决我的问题。
如果您在使用@ joelnet评论工作时遇到问题,请尝试清理并重建项目。
这些提示帮助我找到解决方案。
首先,我将Web.config
从同一解决方案中另一个项目的Views
文件夹复制到我的新Views
文件夹中。我重命名了主namespace
标记以匹配新项目,并在收到错误后删除了另一个我不需要的<add namespace="..." />
。然后我触发了一个构建(只有正常构建,我不需要清理和重建),并且我能够无错误地加载我的新视图。
答案 6 :(得分:-1)
安装软件包:Install-Package Microsoft.AspNet.WebPages