我正在尝试使用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
已将项目设置为使用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版本中编译和运行。
非常感谢,如果有人能指出我可以在这些树林中找到一些木头:)
如果有人遇到这种情况,那只是因为位于“Views”文件夹下的web.config文件尚未更新,因此引用了MVC3 Razor组件。咄。
最简单的方法是从现有的MVC3项目中复制一个。
解决方案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
出于某种原因,需要在顶部添加@model。我可以通过在页面顶部添加以下语句来修复,尽管我没有将任何内容传递给该页面。
@model String