vistas tutorial net mvc extension espaƱol cshtml con code asp asp.net-mvc asp.net-mvc-4 razor

asp.net mvc - tutorial - Razor View tirando "El nombre ''modelo'' no existe en el contexto actual"



razor insert c# code (17)

Acabo de hacer un montón de refactorización a lo largo de mi aplicación MVC 4, y ahora que estoy tratando de revisar mis depuraciones, Razor me está dando este error sin sentido:

The name ''model'' does not exist in the current context.

La parte que literalmente no tiene sentido es que esto está causando el error:

@model ICollection<DataSourceByActive>

Sé con @model que @model es la sintaxis correcta de Razor.

Entonces, ¿por qué está sucediendo esto? ¿Cómo puedo arreglarlo?


Aquí esta lo que hice:

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

El archivo .suo es un archivo oculto en la misma carpeta que el archivo de solución .svn y contiene las Opciones de usuario de Visual Studio.


Cambiar a @Modelo de @model hizo el trabajo por mí.


Cambiar la siguiente línea en la carpeta web.config of view resolvió el mismo error.

De

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

A

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


Creo que has arruinado el archivo web.config que vive en la carpeta Vistas.

Cree un nuevo proyecto que tenga como objetivo el mismo .NET Framework y copie su archivo Views / web.config encima de su proyecto actual.

Esto solucionará tu problema.

Además, Dudeman3000 comentó "si tienes Áreas en tu proyecto MVC, todas tienen archivos Views / web.config también".


En mi caso me faltaba @ al comienzo del foreach

@foreach (var item in Model) { <tr class="clickable-row"> <td class="clickable-field"> @Html.DisplayFor(modelItem => item.Label) </td> <td class="clickable-field hidden-xs"> @Html.DisplayFor(modelItem => item.Value) </td> </tr> }


En mi caso, el problema era que después de actualizar el proyecto de MVC 4 a MVC 5 de alguna manera me perdí un cambio de versión en Views / web.config:

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

Todavía tenía la antigua versión 2.0.0.0. Después de cambiar la versión a 3.0.0.0, todo comenzó a funcionar correctamente.

Además, debido a este problema, Visual Studio 2015 Community Edition comenzaría a atacar la CPU (30-40% de uso en reposo) cada vez que abriera un archivo .cshtml.


En mi caso, el siguiente código resulta útil. Coloque el código debajo del archivo Web.config debajo de la carpeta Vistas.

<configSections> <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"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections>

Una vez que se actualiza el código, asegúrese de limpiar y reconstruir la solución. ¡Espero que esto lo pueda ayudar!


En mi caso, recientemente actualicé desde MVC 4 a MVC 5, lo que estropea bastante la web. Configurar bastante mal. Este artículo ayudó enormemente.

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

La conclusión es que debe verificar todas las referencias de número de versión en su web.config y Views / web.config para asegurarse de que están haciendo referencia a las versiones actualizadas correctas asociadas con MVC 5.


Encontré una solución. Si desea actualizar la versión de afeitar o mvc 4 a 5, cambie algunas líneas.

Código antiguo en Views / web.config

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

Reemplazado con

<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"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup>

sectionGroup debe cambiar.


Es probable que use en el código una variable llamada model .


Estaba intentando agregar una vista que estaba fuera de mi carpeta "Vistas" (solo para organizar mi código de forma diferente, supongo), cuando tuve este problema. La creación de la vista dentro de Vistas (como por convención) lo resolvió.


Para mí, el problema era una versión conflictiva de .NET en una de las bibliotecas que importé recientemente. La biblioteca que importé se compiló para 4.5.2 y el sitio ASP.NET MVC lo importé en el objetivo 4.5. Después de recompilar dicha lib para 4.5, el sitio web compilaría.

Además, no hubo errores de compilación, pero el problema se informó como una "advertencia". Así que asegúrese de leer todas las advertencias si las hay.


Para resolver esto, me aseguré de actualizar a la versión más nueva de MVC usando NuGet y Package Manager Console.

Install-Package Microsoft.AspNet.Mvc -Version 5.2.4

Luego se actualizó a la última versión de Razor

Install-Package Microsoft.AspNet.Razor-Version 3.2.4

Luego cambié todos los archivos web.config para reflejar el cambio. Como verá a continuación:

En el archivo web.config principal, asegúrese de que la página web: versión sea correcta. Aquí es donde se puede encontrar (ignorar las otras claves):

<configuration> <appSettings> <add key="webpages:Version" value="3.0.0.0"/> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings> </configuration>

Luego, busque las otras versiones enumeradas en los ensamblajes, verifique la versión del ensamble contra la versión de la biblioteca que figura en las referencias de su proyecto. Es posible que no necesite todos estos.

<system.web> <compilation debug="true" targetFramework="4.6"> <assemblies> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add assembly="System.Web.Helpers, Version=3.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=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </assemblies> </compilation> </system.web>

Runtime assemblyBinding también debería mostrar la "nueva versión", ver dónde se lee NewVersion 5.2.4.0? Pero también revise todas las otras versiones.

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-5.2.4.0" newVersion="5.2.4.0"/> </dependentAssembly> </assemblyBinding> </runtime>

ENTONCES en la sección Vistas web.config, asegúrese de que Razor es la versión correcta:

<configuration> <configSections> <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"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <configuration>

Y Lastlt está la sección Páginas de las Vistas Web.Config

<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> </controls> </pages>


Tuve el mismo problema, creé un nuevo proyecto y copié los archivos web.config como lo recomendaba la respuesta de Gupta, pero eso no me solucionó las cosas. Revisé la respuesta de Alex y Liam, pensé que esta línea debe haber sido copiada del nuevo web.config, pero parece que el nuevo proyecto en sí no tenía esta línea (MVC5):

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

Agregar la línea al archivo views / web.config resolvió el problema para mí.


asegúrese de tener lo siguiente tanto en su sitio web.config como en el directorio de vistas web.config en la sección appSettings

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

Para el uso de MVC5:

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

(Y solo existe en el archivo principal Web.config).


@Model el problema utilizando @Model lugar de solo el model al imprimir las variables.


¡DEBE reiniciar Visual Studio para que cualquiera de los cambios en estas respuestas surta efecto!

Siento que esto necesitó algo de exposición, porque intentas muchos cambios y puede encontrar la combinación correcta, pero nunca lo sabrás a menos que realmente intentes reiniciar, y probablemente te pierdas la solución todos juntos.