Le fichier de mise en page MVC4 Razor suivant charge plusieurs ensembles de scripts et css créés dans 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>
Lorsque la page est rendue, l'erreur suivante se produit. Pour une raison quelconque, les commandes @Scripts et @Styles ne sont pas reconnues. Si je tape "@Scripts" dans les fichiers, Intellisense n'affiche/affiche pas la commande. Le projet fait référence à System.Web.Optimization, utilisé dans Bundle.config.
Qu'est-ce qui pourrait empêcher les commandes @Scripts et @Styles d'être reconnues?
Erreur serveur dans l'application '/'.
Erreur de compilation
Description: une erreur s'est produite lors de la compilation d'une ressource requise pour traiter cette demande. Veuillez consulter les détails d'erreur spécifiques suivants et modifier votre code source de manière appropriée.
Message d'erreur du compilateur: CS0103: Le nom "Scripts" n'existe pas dans le contexte actuel
Erreur de source:
Ligne 4: Ligne 5: XXX Beta Ligne 6: @ Scripts.Render ( Ligne 7: "~/bundles/bundle_jquery", Ligne 8: "~/bundles/bundle_modernizr",
Fichier source: c:\Utilisateurs\nom d'utilisateur\Documents\Visual Studio 2010\Projets\XXX\Solution\xxx. site Web\Views\Shared_sidebarLayout.cshtml Ligne: 6
Afficher la sortie détaillée du compilateur:
Afficher la source de compilation complète:
Assurez-vous que l'assembly System.Web.Optimization.dll
a été référencé dans votre projet et que l'espace de noms <add namespace="System.Web.Optimization"/>
a été ajouté à votre fichier ~/Views/web.config
(et non au fichier ~/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>
L'assembly System.Web.Optimization.dll
est contenu dans le Microsoft.AspNet.Web.Optimization
NuGet, assurez-vous qu'il est installé dans votre projet (lorsque vous créez un nouveau projet ASP.NET MVC 4 dans Visual Studio à l'aide du modèle Internet, ce NuGet est automatiquement ajouté au projet).
Si vous utilisez des bundles (comme dans l'exemple en question), vous devrez peut-être également ajouter une configuration de bundle à votre application:
Ajoutez Bundle Config à votre dossier 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
}
}
Ajoutez la ligne suivante à votre fichier Global.asax.cs
BundleConfig.RegisterBundles(BundleTable.Bundles);
Comme indiqué ici :
ouvrez le dossier: Utilisateurs\(utilisateur)\AppData\Local\Microsoft\VisualStudio (version)
supprimer le dossier: ComponentModelCache
redémarrez Visual Studio (ComponentModelCache est recréé et le problème disparaît)
Il y a deux fichiers de configuration Web dans votre projet ... les deux doivent avoir
<add namespace="System.Web.Optimization"/>
Dans mon cas, j'ai dû changer le cadre cible de mon projet de 4.5 à 4.5.1.
1. Assurez-vous que la DLL System.Web.Optimization est redérencée dans les références du projet . Sinon installez-la avec NuGet (Package Manager Console):
Install-Package Microsoft.AspNet.Web.Optimization
2. Ajouter l'espace de noms System.Web.Optimization au "Views" web.config:
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Optimization"/>
</namespaces>
</pages>
</system.web.webPages.razor>
3. Si le problème persiste, essayez de fermer/d'ouvrir à nouveau Visual Studio pour actualiser le cache.
J'ai trouvé la réponse ici entrez la description du lien ici
apparemment, vous devez ajouter le fichier web.optimization à partir de votre racine web.config.