2013-03-24 8 views
7

sto ottenendo:Tipo 'ASP._Page_index_cshtml' non eredita da 'System.Web.WebPages.WebPage'

Tipo 'ASP._Page_index_cshtml' non eredita da 'System.Web.WebPages.WebPage '.

quando si passa al file index.cshtml. E 'molto semplice:

@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> 

mio file index.cshtml è al di fuori della cartella Visualizzazioni, se quello che conta affatto.

risposta

3

ho solo dovuto togliere: @inherits System.Web.Mvc.WebViewPage

Sembra che ho avuto un errore di copia incolla quando riorganizzare il mio progetto.

+0

Questa non è la soluzione, in realtà sta causando un altro problema, hai un file extra nascosto nel progetto. Vedi la mia risposta per favore. – Yogurtu

-1

Perché stai cercando di passare direttamente a una vista? E perché non si trova in una cartella di visualizzazioni?

Per ottenere una pagina di base "Ciao Mondo" fino in primo luogo desidera creare un controller chiamato HomeController.cs:

using System.Web.Mvc; 

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

quindi creare un file di /Views/Home/Index.cshtml e mettere il vostro markup in questo. Potrebbe anche essere necessario aggiungere:

@{ 
    Layout = null; 
} 

alla parte superiore della pagina in quanto non sembra che si sta utilizzando una pagina master.

Come nota a margine, tutto ciò presuppone che non abbiate fallito il routing predefinito.

+0

Guardando attraverso il tuo commento storia, non sembra sei un principiante che MVC Ho assunto quando ho postato questo. Quindi mi scuso se questo post si presenta come condiscendente. Non penso che il server sarà in grado di visualizzare correttamente una vista se non viene instradato attraverso un controller. Quando dici return view(); è qui che il rendering accade realmente ed è un passo importante che non penso tu possa saltare. – rybl

0

Potrebbe essere che una versione precedente di System.Web.WebPages.dll sia caricata in memoria e tenta di trasmettere la pagina cshtml a una versione della classe WebPages da tale DLL.

Per verificare ciò, provare a vedere quali moduli HTTP sono attualmente registrati:

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

Nel mio caso che era:

.... 
__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 

Per risolvere il problema è necessario sostituire la versione precedente di System.Web.WebPages.dll nelle cartelle/Bin o in altre DLL che potrebbero farvi riferimento.

-4

Rimuovere web.config dalla cartella Views.

Poiché stai includendo Partial1.cshtml da quella cartella, include anche il web.config da lì. E che web.config sta dicendo che tutte le pagine devono ereditare da WebViewPage.

1

Non rimuovere l'ereditarietà, potrebbe essere necessario e potrebbe causare altri problemi in futuro.

Invece provare questo:

Attiva "visualizzare tutti i file" nel progetto web che sta fallendo, e cercare un file che sembra corretto, ma non è incluso in Visual Studio, ed eliminarlo. Se non riesce nella cartella di installazione, prova a pulire anche la cartella e a distribuire di nuovo il sito, potresti avere file non necessari che potrebbero causare lo stesso problema.

Nel mio caso, nella root del webproject avevo una copia extra di _ViewStart.cshtml (escluso dal progetto), ho cancellato quel file e questo ha fatto il trucco.

Spero che mi aiuti, fammi sapere se questo risolve anche il tuo problema.

+1

Esattamente quello che è successo a me. Ho avuto un upload FTP errato in cui ho inserito _ViewStart.cshtml nella directory principale della directory e non in/Views /. Spero che questo aiuti qualcuno. –

0

Basta eliminare _ViewStart.cshtml e aggiungere nuovamente.

0

Non è necessario prendere la tensione. Basta seguire 2 passi fondamentali

  1. Eliminare l'istruzione Crea _ViewStart.cshtml
  2. a un commento. Mezzi per la seguente dichiarazione in vista indice:

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

    e segnare come un commento:

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