sintaxis mvc cshtml code asp.net-mvc razor

asp.net mvc - cshtml - MVC 4 @Scripts "no existe"



razor insert c# code (24)

  1. : eliminar la página de visualización.
  2. : agregar espacio de nombres webconfig (en el directorio de visualización)
  3. : crea una vista y prueba!

buena suerte...

Acabo de crear un proyecto ASP.NET MVC 4 y utilicé Visual Studio 2012 RC para crear una vista de controlador y de afeitar para Index y Create acciones.

Cuando vine a ejecutar la aplicación y navegué a la vista Create , se mostró el siguiente error:

Mensaje de error del compilador: CS0103: el nombre ''Scripts'' no existe en el contexto actual

El problema es el siguiente código que se agregó automáticamente a la parte inferior de la Vista:

@section Scripts { @Scripts.Render("~/bundles/jqueryval") }

¿Por qué no existen los scripts?

Miré la clase de página web base en Assembly System.Web.Mvc.dll, v4.0.0.0

Puedo ver las siguientes propiedades de ayuda disponibles:

  • Ajax
  • Html
  • Url

Pero nada llamado Scripts.

¿Algunas ideas?

EDITAR:

Mi archivo Web.config se ve así (sin tocar desde el que creó Visual Studio):

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

EDICIÓN # 2:

La gente está @Scripts sobre el uso del ayudante @Scripts :

Sin embargo, después de instalar Visual Studio 2012 RC en una instalación nueva de Windows 8, todavía no @Scripts usar @Scripts , ¡aunque Visual Studio lo agrega a la vista generada!

Las soluciones se presentan a continuación.

No estoy seguro de cómo cerrar esto, porque al final una actualización pareció resolver el problema. Comprobé dos veces que había realizado una instalación limpia, utilizando un nuevo proyecto. Pero el mismo proyecto fallido que había hecho funciona bien ahora después de varias actualizaciones y ninguna intervención manual obvia. Gracias por todos los pensamientos, pero definitivamente hubo un problema en ese momento;)


Actualicé de Beta a RC y enfrenté ''Scripts'' no existe problema. Navegó por toda la web y la solución final es lo que dijo N40JPJ más otro estudio de trabajo:

Copie lo siguiente en View / Web.config:

<namespaces> <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.Optimization"/> <add namespace="System.Web.Helpers"/> </namespaces>

y lo siguiente dentro de View / Shared_Layout.cshtml

@if (IsSectionDefined("scripts")) { @RenderSection("scripts", required: false) }

Espero eso ayude.


Al parecer, ha creado un tipo de proyecto ''Vacío'' sin la carpeta ''Scripts''. Mi consejo: cree un tipo de proyecto ''Básico'' con la carpeta ''Scripts'' completa.

Con respecto a todos los desarrolladores.


Cree una nueva aplicación de internet MVC 4 RC y ejecútela. Navegue a Login que usa el mismo código

@section Scripts { @Scripts.Render("~/bundles/jqueryval") }

Lo que permite que Login.cshtml funcione es el archivo Views / Web.config (no la versión raíz de la aplicación) que contiene

<namespaces> <add namespace="System.Web.Optimization"/> </namespaces>

¿Por qué su vista de creación no funciona y el inicio de sesión es?


Cuando comencé a usar MVC4 recientemente, enfrenté el problema anterior al crear un proyecto con las plantillas vacías. Pasos para solucionar el problema.

  1. Ir a TOOLS -> Library Package Manager -> Packager Manager Console Pegue el siguiente comando y presione enter Install-Package Microsoft.AspNet.Web.Optimization Nota: espere a que la instalación sea exitosa.
  2. Vaya al archivo Web.Config en el nivel raíz y agregue el siguiente espacio de nombres en la sección de espacio de nombres de las páginas. agregar <namespace="System.Web.Optimization" />
  3. Vaya a Web.Config en la carpeta Vistas y siga el paso 2.
  4. Construye la solución y ejecuta.

El paquete mencionado en el paso 1 agregará algunas bibliotecas del sistema a las referencias de la solución como System.Web.Optimization no es una referencia predeterminada para plantillas vacías en MVC4.

Espero que esto ayude. Gracias


Cuando entro en una página que tiene este código:

@section Scripts { @Scripts.Render("~/bundles/jqueryval") }

Este error se produce: error. Se produjo un error al procesar su solicitud.

Y esta excepción está registrada en mis registros:

System.Web.HttpException (0x80004005): The controller for path ''/bundles/jqueryval'' was not found or does not implement IController. em System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) ...

He intentado todos los consejos en esta página y ninguno de ellos resuelto por mí. Así que busqué en mi carpeta de Paquetes y noté que tengo dos versiones para System.Web.Optmization.dll:

  • Microsoft.AspNet.Web.Optimization.1.1.0 (v1.1.30515.0 - 68,7KB)
  • Microsoft.Web.Optimization.1.0.0-beta (v1.0.0.0 - 304KB)

Mi proyecto hacía referencia a la versión beta más antigua. Solo cambié la referencia a la versión más nueva (69 KB) y todo funcionó bien.

Creo que podría ayudar a alguien.


Eso tiene una solución obvia. Tuve el mismo problema después. No está relacionado con Referencias de ensamblaje o .... Ocurrirá en llamadas de jerarquía de MVC Vistas parciales, cuando tenga estructuras de página complicadas. Por lo tanto, llamar / renderizar cada parte por separado en cada página (tal vez una página maestra o parcial) hará que no se vean las partes requeridas de la página como el siguiente código:

@RenderSection("Scripts", required: false)

Eso simplemente obliga a la página a encontrar y representar una sección relacionada y, en caso de fallo, le muestra un mensaje de error como usted.

Por lo tanto, le sugiero que rastree sus páginas (como el seguimiento del programa) desde el maestro hasta todos sus parciales para detectar dependencias . Tal vez sea un trabajo terrible, pero no hay otras opciones disponibles aquí.

No es que, según mi experiencia, algunas situaciones condicionales en la programación causen que no se muestre el error correcto que causa el problema.


Estoy usando áreas, y acabo de encontrarme con este problema, simplemente copié los espacios de nombres de la raíz web.config a las áreas web. config y ahora funciona !!

<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.Optimization" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" />


Faltaba un pequeño paso de lo anterior, que encontré en otra publicación. Después de agregar

<add namespace="System.Web.Optimization" />

a sus ~/Views/web.config namespaces, cierre y vuelva a abrir Visual Studio. Esto es lo que tuve que hacer para que esto funcione.


Importe System.Web.Optimization en la parte superior de su vista de maquinilla de afeitar de la siguiente manera:

@using System.Web.Optimization


La clave aquí es agregar

<add namespace="System.Web.Optimization" />

a AMBOS archivos web.config. Mi escenario era que tenía una referencia de System.Web.Optimization tanto en el proyecto como en el principal / root web.config pero @Scripts todavía no funcionaba correctamente. Debe agregar la referencia del espacio de nombres al archivo de vistas web.config para que funcione.

ACTUALIZAR:

Desde el lanzamiento de MVC 4 System.Web.Optimization ahora está obsoleto. Si está comenzando con una solución en blanco, necesitará instalar el siguiente paquete nuget:

Install-Package Microsoft.AspNet.Web.Optimization

Aún necesitará hacer referencia a System.Web.Optimization en sus archivos web.config. Para más información vea este tema:

Cómo agregar una referencia a la aplicación System.Web.Optimization para MVC-3 -verted-to-4

Como muchos indicaron, podría ser necesario reiniciar VS después de los pasos anteriores para hacer que esto funcione.


Me encontré con este problema, sin embargo, mientras ejecutaba el comando:

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization

Recibí el mensaje críptico (me encantó un gran juego de palabras antes de la primera taza de café):

Paquete de instalación: el algoritmo criptográfico especificado no es compatible con esta plataforma.

Estoy ejecutando esto en Windows XP SP3 (no por elección) y lo que encontré fue que tuve que seguir las instrucciones publicadas por el usuario artsnob en el Foro ASP.NET

  • Por favor, desinstale el Nuget e intente reinstalarlo. Si no puede hacer esto, inicie sesión como administrador.
  • Vaya a Herramientas => Administrador de extensiones => Seleccione "Administrador de paquetes Nuget" => Desinstalar
  • Instálalo de nuevo, buscando "Nuget" => Instalar.
  • Si no funcionó, intente instalar la versión 1.7.x como mencioné en la publicación anterior (no significa que tenga que usar la versión anterior; si funciona bien, podemos informar este error y obtener el Parches para la última versión).

Una vez que ejecuté esto, podría ejecutar la línea de comandos para actualizar la optimización de Web.Optimization.

Espero que esto salve a alguien algo de excavación.


Para mí, esto resolvió el problema, en la consola del administrador de paquetes NuGet escribe lo siguiente:

update-package microsoft.aspnet.mvc -reinstall


Prueba esto:

@section Scripts { Scripts.Render("~/bundles/jqueryval") // <- without ampersand at the begin }


Resuelvo este problema en MvcMusicStore agregando esta parte del código en _Layout.cshtml

@if (IsSectionDefined("scripts")) { @RenderSection("scripts", required: false) }

y elimine este código de Edit.cshtml

@section Scripts { @Scripts.Render("~/bundles/jqueryval") }

Ejecuta el programa inshallah trabajará contigo.


Si agregó a su web.config y aún muestra un mensaje, entonces necesita cerrar su proyecto y volver a abrirlo, ahora existirá y @ Styles.Render ("") y @ Scripts.Render () funcionarán bien.


Solo escribe

@section Scripts{ <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script> }


Tuve el mismo problema y utilicé WinMerge para ayudarme a localizarlo. Pero a medida que lo investigué más, descubrí que Rick tiene la publicación de blog perfecta para ello.

Resumen:

  • Agregue <add namespace="System.Web.Optimization"/> a ambos archivos web.config
  • Ejecute Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
  • Actualizar código de empaquetado
  • Actualizar archivo de diseño
  • El último paso es actualizar otras 10 bibliotecas. No lo hice y funcionó bien. Así que parece que puedes postergarlo (a menos que ya haya actualizado 1 o más de ellos). :)

Tuve el mismo problema:

La versión System.Web.Optimization que estaba usando no estaba actualizada para MVC4 RC.

Actualicé mis paquetes utilizando el administrador de paquetes en VS 2010.

En este blog de MSDN , el Sr. Andy habla sobre cómo actualizar su proyecto MVC 4 Beta a MVC 4 RC. Al actualizar mis paquetes obtuve los scripts (particularmente el de optimización web) para que yo los resolviera:

Para instalar el último paquete System.Web.Optimization, use la Consola del Administrador de paquetes (Herramientas -> Administrador de paquetes de la Biblioteca -> Consola del Administrador de paquetes) y ejecute el siguiente comando:

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization

Use el archivo System.Web.Optimization incluido en el paquete en sus referencias.

Para actualizar otros paquetes: menú Herramientas -> Administrador de paquetes de biblioteca -> Administrar paquetes NuGet para la solución.


Tuve este problema después de agregar un Área a un proyecto que no tenía ninguno. Para deshacerse de él, simplemente copió la carpeta web.config con vistas a la carpeta de Vistas del área y comenzó a funcionar.


Tuve un error muy similar al actualizar un proyecto de MVC3 a MVC4.

Mensaje de error del compilador: CS0103: el nombre [blah] no existe en el contexto actual

En mi caso, tenía números de versión desactualizados en varios de mis Web.Configs.

  1. Necesitaba actualizar el número de versión de System.Web.Mvc de "3.0.0.0" a "4.0.0.0" en cada Web.Config en mi proyecto.
  2. Necesitaba actualizar todos mis números de versión System.Web.WebPages, System.Web.Helpers y System.Web.Razor de "1.0.0.0" a "2.0.0.0" en cada Web.Config en mi proyecto.

Ex:

<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> ... <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Web.Helpers, Version=2.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" /> </assemblies> </compilation>

Asegúrese de revisar los Web.Configs en cada uno de sus directorios de Vistas.

Puede leer más sobre la actualización de un proyecto ASP.NET MVC 3 a ASP.NET MVC 4 .


Una más para la olla: las edades pasadas tratando de resolver el mismo problema, aunque se definió en web.config para la raíz y la raíz de Vistas. Resulta que lo había añadido por error al <system.web><pages><namespaces> , y no a <system.web**.webPages.razor**><pages><namespaces> .

Realmente fácil de perder eso!


simplemente elimine / oculte el código de crear y editar la vista de afeitar de su controlador.

@section Scripts { @Scripts.Render("~/bundles/jqueryval") }


@Styles y @Scripts son 2 nuevos ayudantes proporcionados por la biblioteca System.Web.Optimization . Como su nombre indica, agrupan y minimizan los archivos o recursos CSS y JavaScript respectivamente.

Intente incluir el espacio de nombres System.Web.Optimization mediante @using directiva de uso o mediante web.config

http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification

ACTUALIZAR

Microsoft ha movido la agrupación / minificación a un paquete separado llamado Microsoft.AspNet.Web.Optimization . Puedes descargar el ensamblaje desde nuget .

Esta post te será útil.