19

我正在尝试让一个 MVC 3 Razor 项目与 MonoDevelop 一起使用。

我使用 Mono 2.10.9 / MonoDevelop 3.0.4.7 创建了一个新的 ASP.net MVC 2 项目,并将以下 DLL 从现有的基于 Windows 的 MVC3 项目复制到 Mono 项目的“bin”目录:

System.Web.Helpers.dll
System.Web.Razor.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.dll
System.Web.WebPages.Razor.dll

已将项目设置为使用 Mono / .NET 4。默认索引文件已被删除并替换为 Index.cshtml 文件。当我执行项目时,出现以下错误:

The view at '~/Views/Home/Index.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.

奇怪的是,我之前经历过这个过程并且 MVC 3 页面可以正常工作。只是在升级 Mono(它声称支持 Razor ......?)之后,它现在不再为我工作了。然而,我之前使用 MVC3 创建的项目似乎都可以在新的 Mono 版本中编译和运行。

非常感谢有人能指出我在这些树中哪里可以找到一些木头:)

4

3 回答 3

52

如果有人确实遇到过这种情况,那仅仅是因为位于“Views”文件夹下的 web.config 文件尚未更新,因此它引用了 MVC3 Razor 组件。呃。

最简单的做法是从现有的 MVC3 项目中复制一个。

于 2012-10-30T23:20:01.633 回答
29

解决方案 1。

在您的 cshtml 文件顶部添加以下行。

@inherits System.Web.Mvc.WebViewPage

您现在一定想知道 ASP.NET MVC 模板中的视图在 cshtml 文件顶部没有这一行吗?那么让我们看看第二种解决方案。

解决方案 2。

添加 web.config 文件并为所有视图指定相同的设置。这是此配置文件中消除此错误消息所需的最少代码。

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, 
                  System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection,
System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35"
requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,
System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35"
requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage" ></pages>
  </system.web.webPages.razor>
</configuration> 

实际需要的设置是 pageBaseType="System.Web.Mvc.WebViewPage"。仅需要其他文本来定义标签。

参考链接:点击这里

于 2016-06-01T08:49:54.787 回答
2

出于某种原因,需要在顶部添加 @model。我可以通过在页面顶部添加以下语句来修复,尽管我没有向该页面传递任何内容。

@model String
于 2019-04-10T20:47:59.293 回答