Pregunta El nombre 'ViewBag' no existe en el contexto actual - Visual Studio 2015


Comienzo a desarrollar en ASP.NET nuevamente y encontré un pequeño error dentro de Visual Studio. Mis archivos .cshtml muestran errores cuando se usan algunas funciones de afeitar. Por ejemplo, "El nombre 'ViewBag' no existe en el contexto actual". Aquí hay una foto:

screenshot of problem in visual studio 2015

Estoy usando un proyecto de demostración. Puedes encontrar el proyecto aquí: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

He revisado varios otros hilos y la mayoría sugiero que actualice los archivos web.config. Estos 2 archivos de configuración ya están presentes y dado que es una demo bastante popular, supongo que tiene toda la configuración requerida en ella. Por supuesto, he examinado estos archivos de configuración e incluyen las soluciones sugeridas.

Otros detalles:

  • Ya utilicé limpiar y reconstruir en la solución, pero eso no cambió nada.
  • Cuando creo un proyecto MVC completamente nuevo, funciona
  • Mi amigo tiene el mismo problema y ambos utilizamos VS 2015 y Windows 10
  • Todavía puedo ejecutar la aplicación y funciona.

Gracias por adelantado.


73
2018-03-28 15:53


origen


Respuestas:


Tuve este problema a pesar de tener toda la configuración correcta.

Resultó ser algo archivos incorrectos en la memoria caché de componentes, lo que impide que las vistas Razor reconozcan ViewBag, Model y HtmlHelpers. La eliminación de estos archivos resolvió el problema (las buenas versiones de estos archivos se crearon la próxima vez que abrí Visual Studio).

Los archivos se encuentran aquí:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

Eliminar los cuatro archivos:

  • Microsoft.VisualStudio.Default.cache
  • Microsoft.VisualStudio.Default.catalogs
  • Microsoft.VisualStudio.Default.err
  • Microsoft.VisualStudio.Default.external

Posteriormente, he visto el mismo problema en varias otras máquinas de desarrollo y esta solución lo resuelve rápidamente.


91
2017-11-13 08:40



Actualice los números de versión en la configuración de web.config archivo en la carpeta Vistas.

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Si ha actualizado la versión MVC a través de Nuget, debería ser:

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Es posible que también se necesiten actualizar otras versiones de dependencia. Los problemas de compilación y espacio de nombres en Views for MVC helpers y objects normalmente están relacionados con messis up web.config archivos dentro de las carpetas Ver.


31
2018-04-10 20:36



Busque "páginas web: Versión" en las aplicaciones y actualícela a la versión 3.0.0.0. Mi web.config tenía

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

y lo actualicé a

<add key=”webpages:Version” value=”3.0.0.0″ />

15
2018-01-21 14:10



Después de probar todo bajo el sol, resulta alguna cosa había modificado mi System.Web.WebPages.Razor  <sectionGroup> en /Views/Web.Config del CamelCase adecuado System.Web.WebPages.Razor a una minúscula system.web.webpages.razor que finalmente fue mi fallecimiento

Esperando que esto pueda ayudar a otra pobre alma con este problema ...

Como referencia, esta es la entrada correcta (para mi escenario)

<sectionGroup name="System.Web.WebPages.Razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 

10
2017-12-11 06:53



Me quité accidentalmente web.config desde la carpeta Ver, pensando que no era necesario. Cuando lo devolví, comenzó a funcionar.


5
2017-11-14 16:04



Algunas veces no es suficiente cambiar los números de versión en la configuración de web.config. Este problema se produce porque Visual Studio 2015 no tiene herramientas mvc4.

La solución es actualizar su proyecto a MVC 5. Resuelve totalmente el problema. Puedes obtener ayuda de esta página. Lo explica claramente.

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web- api-2

Por cierto, el equipo de Visual Studio declaró que agregarán compatibilidad con mvc4 a Visual Studio 2015 con la primera actualización.


3
2017-08-22 21:40



Me enfrenté a este problema más veces y finalmente descubrí que sucedió porque la carpeta de vistas debería contener su propia configuración web


3
2017-11-27 13:26



He perdido mucho más de un día de trabajo en esto. Intenté todo en esta (y otras) publicaciones, fue en vano. Eventualmente descubrí que necesitaba abrir el proyecto de una manera diferente. Acabo de actualizar un sitio web existente a Visual Studio 2015, MVC5, .NET framework 4.5.2 y estoy usando Windows 10, pero sospecho que la respuesta hubiera sido la misma para otras versiones de cada aplicación de software.

Esta es la opción de menú que elegí para abrir un sitio web:

enter image description here

En lugar de esto, abrí el archivo csproj que define el proyecto usando esta opción de menú:

enter image description here

Luego tuve la opción de "solución limpia" a la que muchas otras personas se refieren:

enter image description here

Sin embargo, ni siquiera necesitaba esto, ¡todo funcionó! Bueno, de todos modos pasé al siguiente conjunto de problemas ...


1
2018-04-28 09:50



tarde en el juego, pero ninguna de estas soluciones funcionó para mí.

Me actualicé a VS 2017, y el sitio funcionó, pero el compilador de Visual Studio rompió la mayoría de los archivos .cshtml 

TLDR;

mysolution.sln tenía la versión incorrecta

sln diff

por lo que desea crear una nueva solución con VS más nuevos y compararla con la suya y copiar la información de la versión.

Pasos completos de actualización:

  1. Asegúrese de que el archivo .sln tenga la versión correcta para VS
  2. haga clic derecho en MySolution en VS> Nuget Manager> Actualizaciones> ejecute todas las actualizaciones
  3. haga clic derecho en MySolution en VS> Aplicación> actualizar Target Framework (4.5.2 en mi caso)
  4. arregle cualquier problema de versión en archivos .config (es decir, RAZOR a 3.0.0.0)
  5. arreglar cualquier problema de código en el compilador (para mí ForEach era ambiguo)

1
2018-05-04 16:33