视图必须从 WebViewPage 或 WebViewPage < TModel > 派生

我遵循 Justin Slatterry 的插件架构教程,并试图将其改编为 Razor,而不是 WebForm 视图。

其他一切(控制器、插件程序集加载等)似乎都没问题。但是,我无法让嵌入的 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引发

如果需要,我可以包含完整的堆栈跟踪。

有人能告诉我哪里做错了吗?

56360 次浏览

您可以检查的 跟随博客文章是更适合剃刀。

但是为了回答你的问题,因为你现在是从一个非标准的位置服务您的意见,不再有 ~/Views/web.config文件,适用,并允许您指定的基础类型为您的剃刀意见。因此,你可能需要在每个剃须刀视图的顶部添加以下内容:

@inherits System.Web.Mvc.WebViewPage
@model ...

注意: 我有一个非常相似的问题,最后不得不追踪到,我是唯一的开发人员与 MVC 4.0.0。0链接在他们的解决方案。

其他人都有3.0.0.0的正确引用,并且正在构建/运行,没有错误。

确保你的参考文献与你的开发小组的其他成员相同。

我有一个同样的问题,因为我没有提交的包文件夹,其中包含剃须刀图书馆。然后我加入了包裹,它起作用了,但是在重建的时候它破碎了。然后我关闭了 nuget 自动运行在建立,现在它的工作很好。 对我来说 Nuget 把事情搞砸了。

今天在将一个旧的 MVC3-project 更新到版本4的时候出现了这个错误,对我来说,解决方案是删除 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">部分中的属性 appliesTo="v2.0.50727"

安装软件包: Install-Package Microsoft.AspNet.WebPages

我想分享我的痛苦。.站点在本地运行良好,但是当我发布到客户的 IIS 时,它抛出了这个错误。所有的 web.config 文件(根目录和/视图)都与站点的工作副本完全匹配。

其中一个视图(logon.cshtml)的行尾不一致,我没有单击 yes 在 Windows 机器上修复它。

单击 yes 到不一致的行结束对话框并发布 logon.cshtml 视图修复了这个问题。

当我试图将 MVC 脚手架(特别是 Views文件夹)添加到 Web API 项目时,出现了这个错误。达林 · 迪米特洛夫的回答表示:

不再有适用的 ~/Views/web.config文件,并允许您指定的基础类型为您的剃刀视图

在对这个答案的评论中,Joelnet 说:

我可以将 web.config 从 ~/Views 复制到我的备用位置来解决这个问题。

保罗 · 德 · 奥斯特说:

如果在@joelnet 的评论中找不到解决方案,可以尝试清理和重建项目。

这些提示帮助我找到了解决办法。

首先,我将 Web.config从同一解决方案中另一个项目的 Views文件夹复制到我的新 Views文件夹。我重命名了主 namespace标签以匹配新的项目,并在得到一个错误后删除了另一个我不需要的 <add namespace="..." />。然后我触发了一个构建(只是一个普通的构建,我不需要清理和重新构建) ,并且我能够加载我的新视图而不出现错误。