c# - not - El nombre ''ViewBag'' no existe en el contexto actual-Visual Studio 2015
viewbag no existe en el contexto actual mvc 5 (16)
A 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. Puede obtener ayuda de esta página. Lo explica claramente.
Por cierto, el equipo de Visual Studio declaró que agregarán soporte mvc4 a Visual Studio 2015 con la primera actualización.
Estoy empezando a desarrollar en ASP.NET nuevamente y me encontré con un pequeño error dentro de Visual Studio. Mis archivos .cshtml muestran errores al usar algunas funciones de afeitar. Por ejemplo, "El nombre ''ViewBag'' no existe en el contexto actual". Aquí hay una foto:
Estoy usando un proyecto de demostración. Puede encontrar el proyecto aquí: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject
He revisado varios otros hilos y la mayoría sugiere actualizar los archivos web.config. Estos 2 archivos de configuración ya están presentes y, dado que es una demostración bastante popular, supongo que tiene toda la configuración requerida. Por supuesto, he examinado estos archivos de configuración y, de hecho, incluyen las soluciones sugeridas.
Otros detalles:
- Ya he usado clean & rebuild 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 usamos VS 2015 y Windows 10
- Todavía puedo ejecutar la aplicación y funciona.
Gracias por adelantado.
Accidentalmente
web.config
de la carpeta Ver, pensando que era innecesario.
Cuando lo puse de nuevo, comenzó a funcionar.
Actualice los números de versión en la configuración del archivo
web.config
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 otras versiones de dependencia también necesiten actualizarse.
Los problemas de compilación y espacio de nombres en Vistas para objetos y ayudantes de MVC generalmente están relacionados con archivos
web.config
en mal estado dentro de las carpetas Ver.
Apagarlo y encenderlo nuevamente funcionó para mí. Puedes intentar reiniciar Visual Studio.
Busque "páginas web: Versión" en la configuración de la aplicación 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″ />
Después de haber probado al menos el 90% de cada solución / truco de este tema (y otros), ¡finalmente lo he resuelto! Alerta de spoiler, no hay rastro de lógica es la siguiente llamada "solución": Ejecutar la solución con todas las pestañas cerradas finalmente funcionó, cuando nada más me habría ahorrado el "ViewBag & Co no existe en el contexto actual" ... ¡Has sido advertido, no hay una maldita lógica!
Espero que ayude a alguien algún día ^^
Después de probar todo bajo el sol, resulta que
algo
había modificado mi
System.Web.WebPages.Razor
<sectionGroup>
en
/Views/Web.Config
desde el CamelCase
System.Web.WebPages.Razor
apropiado a un
system.web.webpages.razor
minúsculas.
system.web.webpages.razor
que finalmente fue mi desaparición.
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">
Después de probar todo lo demás y sentirme un poco frustrado, actualicé .NET Framework en mi aplicación MVC5 de 4.5 a 4.5.2. De alguna manera solucionó mi problema. Espero eso ayude.
Enfrenté este problema más veces y finalmente descubrí que sucedió porque la carpeta de vistas debería contener su propia configuración web
Había agregado el controlador por
- Paso 1: Agregar> Clase
- Paso 2: UserController
- .
- .
- .
código correspondiente creado:
namespace SampleApp.Controllers
{
public class UserController {
}
}
Mis errores se modificaron al cambiar el Paso 1 como:
- Paso 1: Agregar> Controlador
- Paso 2: controlador de usuario
- .
- .
- .
código correspondiente creado:
namespace SampleApp.Controller {
public class UserController : Controller {
}
}
El problema era: no he heredado mi clase del controlador
Otros mensajes en mi error incluidos, todos los cuales fueron de este problema:
error CS0117: ''ModelState'' no contiene una definición para ''IsValid''
error CS0103: el nombre ''RedirectToAction'' no existe en el contexto actual
error CS0103: el nombre ''Ver'' no existe en el contexto actual
error CS0103: el nombre ''ViewBag'' no existe en el contexto actual
error CS0103: el nombre ''Json'' no existe en el contexto actual
Espero que este cambio ayude a aquellos que no han prestado atención en sus pasos iniciales.
He desperdiciado más de un día de trabajo en esto. Intenté todo en esta (y otras) publicaciones, pero fue en vano. Finalmente 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 habría 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:
En lugar de esto, abrí el archivo csproj que define el proyecto usando esta opción de menú:
Luego tuve la opción de "solución limpia" a la que muchas otras personas se refieren:
Sin embargo, ni siquiera necesitaba esto, ¡todo funcionó! Bueno, de todos modos llegué al siguiente conjunto de problemas ...
Me enfrenté a un problema similar con uno de mis puntos de vista. En mi caso, limpié la solución e intenté reconstruirla y su funcionamiento.
Pude resolver el problema agregando lo siguiente en la parte superior de mi página .cshtml
@{ViewBag.Title = "Title";}
Después de volver a compilar pude eliminar esta línea y el error desapareció.
Resolví el reemplazo en web.config
<add key="webpages:Enabled" value="false" />
con
<add key="webpages:Enabled" value="true" />
Tuve este problema a pesar de tener toda la configuración correcta.
Resultó ser algunos archivos malos en la caché de componentes, evitando que las vistas de 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.
tarde al juego, pero ninguna de estas soluciones funcionó para mí.
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
por lo tanto, 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:
- asegúrese de que el archivo .sln tenga la versión correcta para VS
- haga clic derecho en MySolution en VS> Nuget Manager> Actualizaciones> ejecute todas las actualizaciones
- haga clic con el botón derecho en MySolution en VS> Aplicación> actualizar Target Framework (4.5.2 en mi caso)
- solucione cualquier problema de versión en archivos .config (es decir, RAZOR a 3.0.0.0)
- solucionar cualquier problema de código en el compilador (para mí, ForEach era ambiguo)