Der Name 'Skripte' ist im aktuellen Kontext in MVC nicht vorhanden


74

In meiner MVC-Anwendung hat In der Datei _Layout.cshtml den folgenden Code ...

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

</head>

Aber das Problem ist, dass es heißt The name 'Scripts' does not exists in the current context.

Ich habe die Assembly bereits zur Referenz und zur Bundle-Konfiguration als hinzugefügt using System.Web.Optimization;

Dies passiert auch für @styles . Was soll ich tun?

Antworten:


145

Stellen Sie sicher, dass Sie ~/Views/Web.Configden System.Web.OptimizationNamespace hinzufügen :

<system.web.webPages.razor>
    <pages>
      <namespaces>
        <add namespace="System.Web.Optimization"/>
      </namespaces>
    </pages>
</system.web.webPages.razor>

Ihre Lösung hat funktioniert, der Fehler ist verschwunden, aber es ist immer noch nicht möglich, Informationen auf .cshtml-Seiten zu erhalten. Irgendeine Idee, warum?
Mox Shah

2
Das hat nichts damit zu tun System.Web.Optimization. Aber siehe stackoverflow.com/questions/22832435/…
haim770

1
Nein, früher war es ein Fehler, The name 'Scripts' does not exists in the current contextder nach dem Hinzufügen System.Web.Optimizationin der web.config von view aufgetreten ist, aber ja, Intellisense ist immer noch dasselbe, okay, danke, lassen Sie mich diese Frage überprüfen.
Mox Shah

6
Bei Intelligenzproblemen nach dem Hinzufügen der Datei web.optimization in der Konfigurationsdatei. Schließen Sie alle geöffneten Registerkarten in Visual Studio. Bereinigen Sie das Projekt und erstellen Sie das Projekt. Öffnen Sie die CSHTML-Datei und prüfen Sie, ob die Intelligenz funktioniert. Wenn nicht, erstellen Sie sie erneut. Jetzt sollte es funktionieren.
Dipitak

1
Dies funktionierte für mich, aber nur, nachdem ich Microsoft.Aspnet.Web.Optimization von NuGet installiert hatte - möglicherweise, weil ich mein Projekt von 4.6.0 auf 4.6.2 aktualisiert habe, aber es lohnt sich, nach anderen zu suchen, die Probleme haben
Jon Story

31

Das Folgende in .chtml löst das Problem

@using System.Web.Optimization
@Scripts.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")

2
Es funktionierte!! aber warum es nicht funktioniert, wenn Namespace in Views / web.config hinzugefügt wird
Asad Shakeel

@AsadShakeel Hatte das gleiche Problem und brachte meine dazu, auf die gleiche Weise zu arbeiten. Ich fand, wenn Sie dann @using System.Web.Optimizationwieder entfernt und die Datei _Layouts.cshtml geschlossen und die Lösung neu erstellt, dann die Datei wieder geöffnet, war die Intellisense wieder kaputt. Durch Zurücksetzen der Leitung ohne Neuerstellung wurde sie sofort wiederhergestellt. Dies war in einem Projekt, das ursprünglich keine BundleConfig-Klasse hatte (& nicht in Global.ascx.cs registriert war) und System.Web.Optimization war ursprünglich nicht in meiner web.config. Das alles manuell hinzugefügt. In Projekten, die von Anfang an BundleConfig.cs hatten, trat dieses Problem nie auf.
Vapcguy

@hechchatt: hier sind Sie die reposne
merrais

17

Bitte folgen Sie meinem Schritt, um dies zu löschen

Zuerst

  • Installieren Microsoft.AspNet.Web.Optimisation
  • Überprüfen Sie, ob der App_StartOrdner eine BundleConfig.csDatei enthält .
  • In <namespaces> <add namespace="System.Web.Optimization"/> </namespaces> in Views/web.configDatei
  • in BundleConfig.RegisterBundles(BundleTable.Bundles);inGlobal.asax.cs
  • Erstellen Sie es neu und führen Sie es aus

3

Es gibt immer noch ein Intellisense-Problem. Sie können diesen Code zur Application_Start () -Methode hinzufügen, die sich in der Datei global.asax befindet.

BundleConfig.RegisterBundles(BundleTable.Bundles);

Dies könnte ein Teil des Problems sein, aber genauer gesagt, dass der System.Web.OptimizationNamespace registriert ist (Referenced Assemblies, web.config, usingAnweisung ...).
Vapcguy

1

In VisualStudio 2019 konnte ich diesen Fehler beheben. Microsoft.Web.Optimization ist jetzt im Paket 'Microsoft.AspNet.Web.Optimization' enthalten. Laden Sie das Paket mit NuGet Packing Manager herunter. Fügen Sie in der CSHML-Datei "@using System.Web.Optimization;

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.