2013-03-24 157 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";