ASP.Net MVC4根cshtml和“不从'System.Web.WebPages.WebPage继承”如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (245)

我已经按照在下面逐步列出的步骤中看到的非常类似的帖子提供了答案。

我仍然有相同的错误信息“does not inherit from 'System.Web.WebPages.WebPage'”

概观

我正在John Plupa的Pluralsight上学习“HTML5,Web API,Knockout和jQuery的单页应用程序”。该课程概述了构建一个名为“Code Camper”的应用程序。示例MVC4 SPA创建一个名为“index.cshtml”的根视图。进行一系列@RenderPage调用。此应用程序在我的开发机器上运行良好。但是,如果我尝试从头开始创建一个根view.cshtml的MVC4 SPA,我总是得到错误“不从'System.Web.WebPages.WebPage继承'

一步步

在这里下载。

1.创建一个名为“MVC4RootView”的新MVC4 Internet项目

2.在项目的根目录中,创建一个RootView.cshtml视图。

@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
</head>
<body>
    <div>
            @RenderPage("Views/Partial1.cshtml")
    </div>
</body>
</html>

3.用一个简单的div添加“〜/ Views / Partial1.cshtml”

<div>Hello from Partial 1</div>

4.修改根Web.Config网页:启用为true。

<add key="webpages:Enabled" value="true" />

5.将system.web.webPages.razor添加到根Web.config

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.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.Optimization"/>
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

6.将sectionGroup name =“system.web.webPages.razor”添加到根web.config的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>

7.将RootView.cshtml设置为起始页面

8.运行并获取以下错误:“类型'ASP._Page_RootView_cshtml'不从'System.Web.WebPages.WebPage'继承。

提问于
用户回答回答于

web.configViews文件夹中删除。

正如你Partial1.cshtml从那个文件夹包含的那样,它也包含了那里的web.config。并且该web.config表示所有页面都必须从WebViewPage继承。

用户回答回答于

不要删除webconfig,在你的意见中是一个非常重要的文件!

相反,请这样做:

在Web项目中启用“查看所有文件”,查找失败的文件,然后搜索一个看似正确但未包含在Visual Studio中的文件,并将其删除。如果它在部署文件夹中失败,请尝试清理该文件夹,并重新部署该网站,否则可能会有不必要的文件导致相同的问题。

在我的情况下,在webproject的根目录中,我有_ViewStart.cshtml(从项目中排除)的额外副本,我删除了该文件,而且这样做了。

扫码关注云+社区