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

Nas*_*sir 73 embedded-resource plugin-architecture razor asp.net-mvc-3

我正在关注Justin Slattery的插件架构教程,并尝试将其用于Razor,而不是WebForm Views.

其他一切(控制器,插件组装加载等)似乎没问题.但是,我无法使嵌入式Razor视图正常工作.当我尝试浏览"HelloWorld/Index"时,出现以下错误:

The view at '~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml' must derive from WebViewPage or WebViewPage<TModel>.
Run Code Online (Sandbox Code Playgroud)

抛出异常 System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262

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

任何人都可以建议我可能做错了什么?

Dar*_*rov 156

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

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

@inherits System.Web.Mvc.WebViewPage
@model ...
Run Code Online (Sandbox Code Playgroud)

  • 我能够将web.config从〜/ Views复制到我的备用位置来解决我的问题.谢谢. (12认同)
  • @DarinDimitrov:我创建了一个示例应用程序,在共享文件夹中,我创建了一个用于发送电子邮件的View sampleView.html.我得到了上面的崩溃,并使用了上面的代码,现在它说错误**当使用'model'关键字时,不允许使用'inherits'关键字.** (5认同)
  • @Darin Dimitrov 我有类似的问题。当我尝试添加 `@inherits` 时,我收到一个错误,提示我不能同时使用 `@inherits` 和 `@model`。你能帮忙解决这个问题吗?编辑。我正在使用 mvc4 (2认同)
  • 如果您无法在@ joelnet的评论中找到解决方案,请尝试清理并重建项目. (2认同)

小智 6

注意:我有一个非常相似的问题,并且最终要追查到我是唯一一个在其解决方案中链接了MVC 4.0.0.0的开发人员.

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

TL; DR确保您的引用与开发组的其余部分相同.