2013-03-24 206 views
7

我越来越:型 'ASP._Page_index_cshtml' 不继承 'System.Web.WebPages.WebPage'

类型 'ASP._Page_index_cshtml' 不从“System.Web.WebPages.WebPage继承”。

当我浏览到我的index.cshtml文件。这是非常简单的:

@using System.Web.Optimization 
@inherits System.Web.Mvc.WebViewPage 
<!DOCTYPE html> 
<html class="no-js" lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width"> 
    <title>Hello World</title> 
    @Styles.Render("~/Content/css", "~/Content/themes/base/css") 
    @Scripts.Render("~/bundles/modernizr") 
</head> 
<body> 
    @Scripts.Render(
     "~/bundles/jquery", 
     "~/bundles/jqueryui" 
    ) 
</body> 
</html> 

我的index.cshtml文件是在Views文件夹之外,如果这很重要的话。

回答

3

我不得不删除:@inherits System.Web.Mvc.WebViewPage

貌似我重组我的项目的时候有一个复制粘贴错误。

+0

这不是解决方案,实际上是造成另一个问题,你有一个额外的文件隐藏在项目中..请看我的答案。 – Yogurtu 2017-12-28 01:58:23

-1

你为什么试图直接浏览一个视图?为什么它不在视图文件夹中?

为了得到一个基本的“Hello World”的页面了,你首先要创建一个名为HomeController.cs控制器:

using System.Web.Mvc; 

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

然后创建一个文件/Views/Home/Index.cshtml,并把您的标记在。您可能还需要添加:

@{ 
    Layout = null; 
} 

到页面的顶部,因为它并不像你使用的是母版页。

作为一个方面说明,所有这一切都假定您没有使用默认路由。

+0

通过您的评论的历史来看,它并不像你是一个初学者MVC其中当我发布这个时,我就假设了。所以我很抱歉,如果这篇文章遇到居高临下。我不认为如果服务器不是通过控制器路由,服务器将不能正确地呈现视图。当你说返回View();这就是渲染实际发生的地方,这是我认为你不能跳过的重要步骤。 – rybl 2013-03-24 01:44:38

0

它可能是一个旧版本的System.Web.WebPages.dll被加载到内存中,它会尝试将您的cshtml页面转换为该dll的WebPages类的一个版本。

要进行测试,试图看看HTTP模块正在注册:

var allModules = HttpContext.Current.ApplicationInstance.Modules; 
for(int i = 0; i < allModules.Count; i++) { 
    Trace(allModules.GetKey(i)); 
} 

在我而言,这是:

.... 
__DynamicModule_System.Web.WebPages.WebPageHttpModule, System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35_bca8e05a-5746-45b0-be95-2b920b455ccf 

__DynamicModule_System.Web.WebPages.WebPageHttpModule, System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35_c1a67b42-31a9-47f1-8483-9e712fabe2a7 

要修复需要更换的旧版本的问题您的/ Bin文件夹中的System.Web.WebPages.dll或其他可能引用它的dll-s。

-4

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

由于您包含该文件夹中的Partial1.cshtml,因此它也包含该文件夹中的web.config。并且该web.config表示所有页面都必须从WebViewPage继承。

1

不要删除继承,它可能是必需的,可能会导致未来的另一个问题。

相反试试这个:

启用发生故障的web项目“查看所有文件”,并搜索似乎是正确的,但不包括在Visual Studio中的文件,并删除它。如果它在部署文件夹中失败,请尝试清理该文件夹,并重新部署该网站,否则可能会有不必要的文件导致相同的问题。

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

希望它有帮助,让我知道这是否也解决了您的问题。

+1

到底发生了什么事。我有一个错误的FTP上传,我把_ViewStart.cshtml放在目录的根目录下,而不是在/ Views /中。希望这可以帮助某人。 – 2017-12-28 00:13:07

0

只需删除_ViewStart.cshtml并重新添加。

0

无需采取张力。只要按照2个基本步骤

  1. 删除_ViewStart.cshtml
  2. 制作语句来评论。用于在索引视图以下语句:

    Layout = "~/Views/_ViewStart.cshtml"; 
    

    并将其标记为注释:

    //Layout = "~/Views/_ViewStart.cshtml";