“..必须从MonoDevelop&amp;上的WebViewPage或WebViewPage <tmodel>”派生而来。 MVC3(OS X)</tmodel>

时间:2012-10-19 09:42:31

标签: asp.net-mvc-3 macos mono monodevelop

我试图用MonoDevelop进行MVC 3 Razor项目。

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

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 个答案:

答案 0 :(得分:38)

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

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

答案 1 :(得分:19)

  

解决方案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”。   其他文字只是必需的   定义标签。

参考链接:clickHere

答案 2 :(得分:1)

答案 3 :(得分:1)

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

@model String