MVC3 / Razor:cshtml.Execute()':找不到合适的方法来覆盖

时间:2011-01-26 18:50:47

标签: asp.net-mvc-3 razor

我正在尝试使用RazorViewEngine将MVC2站点转换为MVC3。

我使用this tool升级我的项目,使用Telerik converter tool将我的.aspx视图转换为Razor。 Telerik工具在我的布局顶部放置了@inherits行(从ViewMasterPage开始)。

当我尝试运行使用其中一种布局的页面时,我收到错误:

  

... cshtml.Execute():找不到合适的方法来覆盖

我删除了@inherits标记,它开始适用于我的主页。但是,我继续使用相同的布局获取另一个页面的此错误。现在,在移动一些东西来处理区域问题之后,我又回到了为我的所有页面(无论如何我可以访问的页面)获取此错误。

我尝试关闭Visual Studio,删除临时文件等。

3 个答案:

答案 0 :(得分:21)

想出来 - 以下部分需要在web.config用于剃刀 - 我在web.configs目录的Views中,但在root中没有} web.config

 <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

答案 1 :(得分:4)

这里可能会有一些事情发生。确保遵循这些准则

  • 您的观点中没有@inherits个指令。除非您使用自定义视图页基类,否则它们是不必要的。对于强类型视图,您应该使用@model指令来指定模型类型。对于每周打印的视图,您不需要任何内容​​。
  • 不要将剃刀视图与aspx母版页(或带有剃刀布局的aspx页面)混合使用,因为它们不能轻松地协同工作。这包括检查您拥有return View("ViewName", "MasterName")代码的所有操作方法,因为这可能也会导致使用冲突的临时技术。

答案 2 :(得分:0)

如果您仍然拥有MVC2项目的备份,我会尝试使用Microsoft在MSDN上发布的工具。有关详细信息,请参阅this链接。 Scott Guthrie在MVC3发布时的博文中也写了一些内容,你可以阅读文章here

我担心我无法直接解决这个问题。但听起来像你使用的telerik转换软件中的错误或问题。