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

syd*_*yos 15 razor asp.net-mvc-3

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

我使用此工具升级我的项目和Telerik转换器工具,将我的.aspx视图转换为Razor.Telerik工具@inherits在我的布局顶部放置一条线(从ViewMasterPage开始).

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

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

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

我试过关闭Visual Studio,删除临时文件等.

syd*_*yos 22

弄清楚 - 以下部分需要在web.config剃刀中 - 我web.configsViews目录中有它,但不在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>
Run Code Online (Sandbox Code Playgroud)

  • 该配置部分在技术上是正确的,但您在根web.config中不需要它.将它保存在〜/ Views/Web.config中,但只需确保pageBaseType ="System.Web.Mvc.WebViewPage",而不是"System.Web.Mvc.ViewPage".我刚刚在我的应用程序中解决了同样的错误. (11认同)

mar*_*ind 5

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

  • @inherits的视图中没有指令。除非您使用自定义视图页面基类,否则它们是不必要的。对于强类型视图,您应该使用该@model指令来指定模型类型。对于每周类型的视图,您不需要任何东西。
  • 不要将 razor 视图与 aspx 母版页(或带有 razor 布局的 aspx 页面)混合在一起,因为它们不容易一起工作。这包括检查所有具有类似代码的操作方法,return View("ViewName", "MasterName")因为这也可能导致使用冲突的模板技术。