nombre mvc existe error cs0103 contexto actual asp.net-mvc-3 razor

asp.net mvc 3 - error - El nombre ''modelo'' no existe en el contexto actual en MVC3



error cs0103: el nombre ''viewbag'' no existe en el contexto actual (19)

Actualización: 5/5/2015 Para su proyecto MVC 5, necesita configurar la Versión a 5.0.0.0 en su /views/web.config

<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </system.web.webPages.razor>

Agregué una página cshtml en un proyecto. Cuando intenté agregarle la siguiente declaración, aparece un error: "El nombre ''modelo'' no existe en el contexto actual".

@model xyz.abc.SomeClass

Revisé las referencias, todas están en su lugar. Agregué una carpeta web.config en la vista, pero eso no lo solucionó.

¿Hay algo que me pierdo?


Compruebe que su archivo web.config debe existir en los archivos publicados


Es un error horrible pero:

Asegúrese de tener archivos Web.config en su View at Remote . Tal vez saltó para subirlo con los filtros de su programa Ftp.


Estaba enfrentando el mismo problema y luego encontré una solución. La solucion es:

  1. Cerrar Visual Studio
  2. Eliminar el archivo SUO
  3. Reiniciar Visual Studio

El archivo .suo es un archivo oculto en la misma carpeta donde existe el archivo de solución .svn . Espero, funcionará!


Me encontré con este mismo problema cuando creé un área nueva para organizar mis páginas. Mi estructura parece algo así como:

WebProject

  • [] Áreas
    • [] NUEVA Área
      • [] Controladores
      • [] Puntos de vista
  • [] Controladores
  • [] Puntos de vista
    • Web.config
  • Web.config

Las vistas creadas en la carpeta Vistas bajo WebProject funcionaban bien, pero las vistas creadas bajo NewArea arrojaban el siguiente error: "El nombre ''modelo'' no existe en el contexto actual." Para solucionar esto, copié el archivo web.config en la carpeta Vistas en WebProject a la carpeta Vistas en NewArea. Vea abajo.

WebProject

  • [] Áreas
    • [] NUEVA Área
      • [] Controladores
      • [] Puntos de vista
        • Web.config
  • [] Controladores
  • [] Puntos de vista
    • Web.config
  • Web.config

Me encontré con esto porque manualmente creé esta nueva área usando Agregar -> Nueva carpeta para agregar las carpetas. Debería hacer clic derecho en el proyecto y seleccionar Agregar -> Área. Entonces Visual Studio se habría encargado de configurar el área correctamente.


Me encontré con este mismo problema, pero en mi caso, lo único que había cambiado era que había desinstalado Visual Studio 2012 e instalado Visual Studio 2013. Abrí nuestra solución, pero seguí recibiendo lo mismo. The name ''model'' does not exist in current context error de The name ''model'' does not exist in current context en cada vista Razor.

Mi compañero de trabajo sugirió buscar actualizaciones para VS2013. Después de instalar la actualización 1 de VS2013 , dejé de obtener este error.


Me encontré con este problema cuando inadvertidamente tuve una copia del archivo de vista (About.cshtml) para la ruta / sobre en el directorio raíz. (No la carpeta de vistas) Una vez que saqué el archivo de la raíz, el problema desapareció.


Me encontré con este problema también. Mis circunstancias fueron un poco diferentes.

  1. Una de las carpetas de mi vista se movió accidentalmente al directorio raíz de mi proyecto. Esto condujo a la ruta project_root/SignUp/ViewName coincide antes de project_root/Views/SignUp/ViewName . Esto causó el error @model .

  2. Después de volver a mover las vistas a la ubicación adecuada, el directorio se recreó de alguna manera en la raíz del proyecto. Esta vez, vacío. /SignUp/ViewName funcionó, pero /SignUp/ViewName 403 - Forbidden: Access is denied. error. La carpeta completa debe eliminarse de la raíz del proyecto.

Espero que esto ayude a alguien. Pasé horas creyendo que el problema fue causado por nuestra reciente actualización de MVC 3 a MVC 4. Solo una nota: los problemas de actualización solo deberían ocurrir entre MVC 2 y MVC 3. Si ve este problema en versiones posteriores, probablemente no se deba a la mejorar.


Me faltaba web.config en Areas / MyArea / Views / web.config. Una vez agregado, funcionó bien. Esto fue con MVC 5 y .NET4.5


Me llevó años resolver este problema, pero finalmente espero haberlo resuelto en MVC, que es similar:

He reinstalado ASP.NET 4.5 ( http://www.asp.net/downloads )

He seguido el tutorial de actualización en http://www.asp.net/whitepapers/mvc4-release-notes

PERO este párrafo mencionado es incorrecto para mí

System.Web.Mvc, Version=4.0.0.0 System.Web.WebPages, Version=2.0.0.0 System.Web.Helpers, Version=2.0.0.0 System.Web.WebPages.Razor, Version=2.0.0.0

Como tengo Razor en System.Web.Razor , cambié el espacio de nombre de la navaja a System.Web.Razor.

Agregue esto a su web.config

<appSettings> <add key="webpages:Version" value="2.0.0.0" /> </appSettings>

He agregado la referencia de ensamblaje a todos estos conjuntos anteriores

Localice el elemento ProjectTypeGuids y reemplace {E53F8FEA-EAE0-44A6-8774-FFD645390401} con {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

Eso es todo.


Mientras declaras el modelo en la parte superior de la vista usando un código como este:

@model MyModel

necesita capitalizar sus referencias a continuación, por ejemplo:

@Html.Encode(Model.MyDisplayValue)

Creo que una falta de web.config en la carpeta Views sería la causa principal de esto, pero si eso se soluciona y el problema persiste, compruebe que está utilizando Model , no Model , para referirse a él en la fuente.


Para mí, este fue el problema. Todo este bloque faltaba en la sección.

<assemblies> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> </assemblies>


Reinstalar el nuget lo resolvió para mí

PM> Install-Package Microsoft.AspNet.Razor-Version 3.2.3


Si sus vistas se encuentran en un conjunto de biblioteca de clases, lo que es útil para la reutilización de vistas compartidas entre proyectos, entonces simplemente hacer lo que Adam sugiere podría no ser suficiente. Todavía tenía problemas incluso con eso.

Pruebe esto en su web.config en la raíz de su proyecto:

<?xml version="1.0" encoding="utf-8"?> <configuration> <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> </configSections> <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.Helpers" /> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" /> </namespaces> </pages> </system.web.webPages.razor> <appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> <system.web> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> </assemblies> </compilation> <pages> <namespaces> <add namespace="System.Web.Helpers" /> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" /> </namespaces> </pages> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRequests="true" /> <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%/Microsoft.NET/Framework/v4.0.30319/aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%/Microsoft.NET/Framework64/v4.0.30319/aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> </configuration>

Y esto en la web.config en su carpeta de vistas:

<?xml version="1.0"?> <configuration> <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> </configSections> <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.Routing" /> </namespaces> </pages> </system.web.webPages.razor> <appSettings> <add key="webpages:Enabled" value="false" /> </appSettings> <system.web> <httpHandlers> <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> </controls> </pages> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> </system.webServer> </configuration>

Esto funcionó para mí. Ahora tengo intellisense y no hay errores de compilación en mis vistas en un proyecto que no sea de MVC que luego puedo hacer referencia desde múltiples sitios web de MVC.


También hay otra razón. En mi caso, copié un archivo index.cshtml a la carpeta raíz web (fuera de la carpeta Vistas) como copia de seguridad desde el servidor remoto.

Entonces, seguí cambiando mi /views/web.config, seguí cambiando mi /views/home/index.cshtml y seguía ocurriendo un error ... hasta que descubrí /index.cshtml fuera de la carpeta de vistas, lo eliminé y seguro ¡todo volvió a la normalidad!


Tengo el mismo problema después de actualizar los paquetes. Hice todo lo que escribió anteriormente en este tema, pero el subyacente rojo de la palabra clave modelo no ha desaparecido. Más tarde, encontré la solución: simplemente borré la carpeta ''paquete'' del directorio de mi proyecto y la reconstruí, mientras tanto permití a NuGet restaurar los paquetes faltantes. ¡Refrescado, y listo!


Tuve problemas similares al usar VS2012 y VS2013.
Agregando la siguiente línea a <appSettings> en el web.config principal trabajado:

<add key="webpages:Version" value="3.0.0.0" />

Si la línea ya estaba allí pero decía 2.0.0.0, cambiarla a 3.0.0.0 funcionó.


Verifique su archivo de configuración en el directorio de vistas. en el agregar la clave para MVC 4/5


Actualización: si está utilizando una versión más nueva de MVC, se aplica el mismo proceso, solo asegúrese de usar el número de versión correcto en la línea <host> de web.config.

Bueno, me encontré experimentando lo mismo que tú, y después de investigar un poco más, ¡descubrí cuál es el problema!

Necesita incluir el MVC3 web.config predeterminado para la carpeta Vistas. MVC3 tiene dos: uno en la raíz de su aplicación y otro en la carpeta de vistas. Esto tiene una sección para espacios de nombres incluidos. Asegúrate de que el tuyo tenga el siguiente aspecto:

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

Le sugiero que cree un nuevo proyecto MVC3, luego simplemente copie el web.config creado para usted en su carpeta de vistas.

Importante Una vez que haya hecho eso, debe cerrar el archivo y volver a abrirlo. Voila! ¡Intellisense!