该视图必须派生自WebViewPage或WebViewPage <TModel>


73

我正在关注Justin Slattery的Plugin Architecture教程,并尝试使其适应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

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

有人可以建议我做错什么吗?

Answers:


158

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

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

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

1
感谢您提供这两条信息。我将检查您提到的博客。
Nasir

12
我可以将web.config从〜/ Views复制到我的备用位置,以解决此问题。谢谢。
joelnet

1
@Darin Dimitrov我有一个类似的问题。当我尝试添加@inherits我得到一个错误说我不能使用@inherits,并@model在同一时间。你能帮忙吗?编辑。我正在使用mvc4
gumenimeda 2013年

2
如果您无法使@joelnet的注释中的解决方案正常工作,请尝试清理并重建项目。
Paul d'Aoust

5
@DarinDimitrov:我创建了一个示例应用程序,并在共享文件夹中创建了一个用于发送电子邮件的View sampleView.html。我遇到了以上崩溃,并使用了上面的代码,现在说的是错误当使用'model'关键字时,不允许'inherits'关键字。
Imad Alazani 2013年

6

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

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

TL; DR确保您的引用与开发团队的其余部分相同。


1

我遇到了同样的问题,因为我没有提交包含剃刀库的packages文件夹。然后我添加了该程序包,它起作用了,但是在重建时它坏了。然后我在构建时关闭了nuget自动运行,现在一切正常。就我而言,nuget搞砸了。


0

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


0

我想分享我的痛苦..网站在本地正常工作,但是当我发布到客户的IIS时,它抛出此错误。所有的web.config文件(root和/ Views)都与该站点的工作副本完全匹配。

其中一种视图(logon.cshtml)的行尾不一致,因此我没有单击“是”将其修复在Windows计算机上。

在不一致的行尾对话框中单击“是”,然后发布logon.cshtml视图为我修复了该问题。


0

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

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

在评论该答案时,joelnet说

我可以将web.config从〜/ Views复制到我的备用位置,以解决此问题。

保罗D'Aoust说

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

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

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


-1

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


1
我认为Microsoft.AspNet.WebPages4年前还没有针对ASP.NET MV3的软件包。
Nasir

2
@Nasir,我确实是在问,即使今天问题仍然存在,在StackOverflow上还是首选与发布时可用的技术有关的答案吗?
Jared Beach

1
我个人的看法是,如果您回答的是旧问题,至少要承认最初提出该问题时提供的答案可能并不重要。否则,它会作为不知情的答案出现,或者是用户没有注意细节(日期是这些细节之一)。
纳西尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.