"..必须从MonoDevelop和MVC3(OS X)上的WebViewPage或WebViewPage <TModel>派生"

Mr *_*ris 15 macos mono monodevelop asp.net-mvc-3

我正在尝试使用MonoDevelop进行MVC 3 Razor项目.

我使用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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Mr *_*ris 42

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

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


Sku*_*ull 21

解决方案1.

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

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

你一定想知道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> 
Run Code Online (Sandbox Code Playgroud)

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

参考链接:clickHere