ASP.Net MVC4根CSHTML和“不从“System.Web.WebPages.WebPag

2019-07-18 09:45发布

我已其次是非常相似的帖子提供的答案,你会在一步步下列见。

  • Razor视图类型不从“System.Web.WebPages.WebPage”继承

  • http://iamdotnetcrazy.blogspot.com/2012/08/how-to-solve-type-asppageviewstartcshtm.html

我仍然有同样的错误信息“不从‘System.Web.WebPages.WebPage’继承”

概观

我从约翰爸爸的“单页应用与HTML5,网络API,淘汰赛和jQuery”上Pluralsight学习。 该课程大纲建立所谓的“代码露营”的应用程序。 该示例MVC4 SPA创建一个名为“index.cshtml”根视图。 其中一系列@RenderPage调用制成。 此应用程序运行我的开发机器上的罚款。 但是,如果我尝试从头开始创建一个根view.cshtml我总是得到错误MVC4 SPA“不从“System.Web.WebPages.WebPage继承”

一步步

下载这里 。

1.创建一个新的MVC4互联网项目被称为“MVC4RootView”

2.In项目的根目录,创建一个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.Added一个“〜/查看/ Partial1.cshtml”只是一个简单的div

<div>Hello from Partial 1</div>

4.Modified根web.config网页:启用为true。

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

5.Added 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.Added sectionGroup名称= “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.Set RootView.cshtml起始页

8.Run并得到以下错误:“类型‘ASP._Page_RootView_cshtml’不从‘System.Web.WebPages.WebPage’继承。

我在如何解决这个问题的损失。 该守则坎珀代码工作正常。 我比较逐行和看到这将阻止使用的代码没有差异。

思考? 担

Answer 1:

删除web.config从你的Views文件夹。

正如你包括Partial1.cshtml从该文件夹,还包括内有web.config中。 这是web.config中说,所有的页面必须从WebViewPage继承。



Answer 2:

Do not delete the webconfig, is a very important file in your views!!!

Instead, do this:

Enable "View all Files" in the web project that is failing, and search for a file that seems correct but is not included in visual studio, and delete it. If it fails in your deployment folder, try to clean the folder as well, and re-deploy the site, you might have unnecesary files that might cause the same problem.

In my case, at the root of the webproject I had an extra copy of _ViewStart.cshtml (excluded from the project), I deleted that file, and that did the trick.

Hope it helps, let me know if this solve your problem as well.



Answer 3:

我是一个初学者到这一点,但有一件事我没有意识到的是,CSHTML页面通过一个控制器提供服务,而不是直接加载它们。

在同上面的组合,我也只好到以下项设置为false,在Web.config文件中:

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


文章来源: ASP.Net MVC4 Root cshtml and “does not inherit from 'System.Web.WebPages.WebPage”