2011-05-17 12 views
13

Creé un área llamada "Admin".No se puede convertir el objeto del tipo 'ASP._Page_Areas_Admin__ViewStart_cshtml' para escribir 'System.Web.WebPages.StartPage'

En/áreas/admin/Vistas /, tengo _ViewStart.cshtml con esto:

@{ 
    Layout = "~/Areas/Admin/Views/Shared/_Layout.cshtml"; 
} 

Estoy recibiendo el siguiente error cuando visita una página en/admin /: No se puede convertir objeto del tipo 'ASP._Page_Areas_Admin__ViewStart_cshtml' para escribir 'System.Web.WebPages.StartPage'.

Hice los cambios sugeridos desde How do I use a common _ViewStart in areas?.

tengo esto en mi web.config en la raíz, y el web.config en/áreas/admin/Vistas /:

<configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
</configSections> 

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

<appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings> 

Alguien sabe lo que estoy haciendo mal aquí?

EDIT: No sabe si esto ayuda, pero si elimino el código en _ViewStart.cshtml por lo que está vacío, soy capaz de ver las páginas en/Administrador sin conseguir un error.

Respuesta

38

Los archivos _ViewStart.cshtml solo se pueden colocar en una carpeta Views. La excepción que está recibiendo con mucha fuerza sugiere que no ha colocado el _ViewStart.cshtml dentro de la carpeta ~/Areas/Admin/Views/ (en el mismo nivel que el web.config).

Así es como una estructura de proyecto correcto debería ser:

enter image description here

+0

Tienes razón, no estaba en mi carpeta de Vistas. Gracias. – Steven

+0

Para mí, '_ViewStart.cshtml' y' Web.config' están en el mismo nivel. Pero estoy creando una arquitectura conectable para MVC (colocando controladores y vistas en una DLL, y colocando esa DLL en la carpeta '/ Plugins'). También recibo esa excepción. ¿Alguna Idea @Darin? –

+3

@SaeedNeamati Intenta poner '@inherits System.Web.Mvc.ViewStartPage' en tu _ViewStart.cshtml. – ngm

Cuestiones relacionadas