73

我正在关注Justin Slattery 的插件架构教程并尝试将其调整为 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

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

谁能建议我可能做错了什么?

4

7 回答 7

159

您可以查看以下更适合 Razor的博客文章。

但是要回答您的问题,由于您现在从非标准位置提供视图,因此不再~/Views/web.config适用该文件,并允许您为剃刀视图指定基本类型。因此,您可能需要在每个剃刀视图的顶部添加以下内容:

@inherits System.Web.Mvc.WebViewPage
@model ...
于 2011-11-14T20:19:28.927 回答
6

注意:我遇到了一个非常相似的问题,最终不得不追查我是唯一一个在他们的解决方案中链接了 MVC 4.0.0.0 的开发人员。

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

TL;DR确保您的参考文献与您的开发组的其他成员相同。

于 2013-07-23T20:09:26.517 回答
1

我遇到了同样的问题,因为我没有提交包含剃刀库的包文件夹。然后我添加了包,它可以工作,但是在重建时它坏了。然后我在构建时关闭了 nuget 自动运行,现在它工作正常。就我而言,nuget 把事情搞砸了。

于 2015-01-05T23:18:15.193 回答
0

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

于 2015-06-01T13:15:47.787 回答
0

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

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

在不一致的行尾对话框中单击“是”并发布 logon.cshtml 视图为我修复了它。

于 2016-09-14T10:03:07.553 回答
0

当我尝试将 MVC 脚手架(特别是Views文件夹)添加到 Web API 项目时出现此错误。 Darin Dimitrov 的回答说:

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

在对该答案的评论中,joelnet 说

我能够将 web.config 从 ~/Views 复制到我的备用位置以解决我的问题。

Paul d'Aoust说:

如果您无法让@joelnet 评论中的解决方案正常工作,请尝试清理并重建项目。

这些提示帮助我找出解决方案。

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

于 2017-02-03T17:38:27.000 回答
-1

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

于 2016-04-04T20:39:24.230 回答