asp.net - tutorial - ¿Por qué los comandos @Scripts y @Styles no se reconocen en el archivo MVC4 Razor?
razor insert c# code (6)
Asegúrese de que el ensamblado System.Web.Optimization.dll
haya sido referenciado en su proyecto y que el <add namespace="System.Web.Optimization"/>
se haya agregado a su archivo ~/Views/web.config
(no ~/web.config
archivo ~/web.config
):
<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.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
El ensamblado System.Web.Optimization.dll
se encuentra dentro de Microsoft.AspNet.Web.Optimization
NuGet, así que asegúrese de que esté instalado en su proyecto (cuando crea un nuevo proyecto ASP.NET MVC 4 en Visual Studio usando Internet Plantilla NuGet se agrega automáticamente al proyecto).
El siguiente archivo de diseño MVC4 Razor carga varios paquetes de scripts y scripts creados en Bundle.config.
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
<title>XXX Beta</title>
@Scripts.Render(
"~/bundles/bundle_jquery",
"~/bundles/bundle_modernizr",
"~/bundles/bundle_foundation",
"~/bundles/bundle_jhs")
@Styles.Render(
"~/Content/bundle_foundation",
"~/Content/bundle_jhs")
@RenderSection("pageHeadContent", false)
</head>
<body>
<div id="bodyContainer">
@Html.Partial("Partial/_header")
<div id="contentContainer">
<div id="mainContentContainer">
<div id="sidebarContainer">
@RenderSection("sidebarContent", required: true)
</div>
@RenderBody()
</div>
<div class="clearBoth">
</div>
</div>
@Html.Partial("Partial/_footer")
</div>
</body>
</html>
Cuando se representa la página, se produce el siguiente error. Por algún motivo, los comandos @Scripts y @Styles no se reconocen. Si escribo "@Scripts" en los archivos, el Intellisense no muestra / muestra el comando. El proyecto hace referencia a System.Web.Optimization, que se usa en Bundle.config.
¿Qué podría estar causando que los comandos @Scripts y @Styles no sean reconocidos?
Error del servidor en la aplicación ''/''.
error de compilación
Descripción: Se produjo un error durante la compilación de un recurso requerido para atender esta solicitud. Revise los siguientes detalles de error específicos y modifique su código fuente de manera adecuada.
Mensaje de error del compilador: CS0103: el nombre ''Scripts'' no existe en el contexto actual
Error de fuente:
Línea 4: Línea 5: XXX Beta Línea 6: @ Scripts.Render (Línea 7: "~ / bundles / bundle_jquery", Línea 8: "~ / bundles / bundle_modernizr",
Archivo de origen: c: / Users / username / Documents / Visual Studio 2010 / Projects / XXX / Solution / xxx.website / Views / Shared_sidebarLayout.cshtml Line: 6
Mostrar salida detallada del compilador:
Mostrar fuente de compilación completa:
Información de la versión: Microsoft .NET Framework Version: 4.0.30319; Versión ASP.NET: 4.0.30319.272
Como se indica here :
abra la carpeta: Users / (usuario) / AppData / Local / Microsoft / VisualStudio (versión)
eliminar la carpeta: ComponentModelCache
reinicie Visual Studio (ComponentModelCache se vuelve a crear y el problema desaparece)
En mi caso, tuve que cambiar el marco de destino de mi proyecto de 4.5 a 4.5.1.
Encontré la respuesta aquí ingrese la descripción del enlace aquí
aparentemente necesita agregar la optimización web desde su raíz web.config.
Hay dos archivos webconfig en su proyecto ... ambos necesitan tener
<add namespace="System.Web.Optimization"/>
Si está utilizando paquetes (como en el ejemplo en cuestión), es posible que también deba agregar la configuración del paquete a su aplicación:
Agregue la configuración del paquete a su carpeta App_Start:
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate.js",
"~/Scripts/jquery.validate.unobtrusive.js"
));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/YourStyles.css"));
#if DEBUG
BundleTable.EnableOptimizations = false;
#else
BundleTable.EnableOptimizations = true;
#endif
}
}
Agregue la siguiente línea a su Global.asax.cs
BundleConfig.RegisterBundles(BundleTable.Bundles);