wake-up-neo.net

Warum werden @Scripts- und @Styles-Befehle in der MVC4 Razor-Layoutdatei nicht erkannt?

Die folgende MVC4 Razor-Layoutdatei lädt mehrere in Bundle.config erstellte Skript- und CSS-Bundles.

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

Wenn die Seite gerendert wird, tritt der folgende Fehler auf. Aus irgendeinem Grund werden die Befehle @Scripts und @Styles nicht erkannt. Wenn ich in die Dateien "@Scripts" eingebe, wird der Befehl von Intellisense nicht angezeigt. Das Projekt verweist auf System.Web.Optimization, das in der Bundle.config verwendet wird.

Was könnte dazu führen, dass die Befehle @Scripts und @Styles nicht erkannt werden?


Serverfehler in '/' Anwendung.

Kompilierungsfehler

Beschreibung: Beim Kompilieren einer für die Bearbeitung dieser Anforderung erforderlichen Ressource ist ein Fehler aufgetreten. Bitte überprüfen Sie die folgenden spezifischen Fehlerdetails und ändern Sie Ihren Quellcode entsprechend. 

Compiler-Fehlermeldung: CS0103: Der Name 'Scripts' ist im aktuellen Kontext nicht vorhanden

Quellfehler:

Zeile 4: Zeile 5: XXX Beta Zeile 6: @ Scripts.Render ( Zeile 7: "~/bundles/bundle_jquery", Zeile 8: "~/bundles/bundle_modernizr",

Quelldatei: c:\Benutzer\Benutzername\Dokumente\Visual Studio 2010\Projekte\XXX\Solution\xxx.website\Views\Shared_sidebarLayout.cshtml Zeile: 6 

Detaillierte Compiler-Ausgabe anzeigen:

Komplette Zusammenstellungsquelle anzeigen:

Versionsinformationen: Microsoft .NET Framework Version: 4.0.30319; ASP.NET-Version: 4.0.30319.272

40
ChrisP

Stellen Sie sicher, dass die System.Web.Optimization.dll-Assembly in Ihrem Projekt referenziert wurde und dass der <add namespace="System.Web.Optimization"/>-Namespace Ihrer ~/Views/web.config-Datei hinzugefügt wurde (nicht ~/web.config-Datei):

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

Die System.Web.Optimization.dll-Assembly ist im Microsoft.AspNet.Web.Optimization NuGet enthalten. Stellen Sie daher sicher, dass sie in Ihrem Projekt installiert ist (wenn Sie ein neues ASP.NET MVC 4-Projekt in Visual Studio mithilfe der Internetvorlage erstellen, wird dieses NuGet automatisch zum hinzugefügt Projekt).

123
Darin Dimitrov

Wenn Sie Bundles verwenden (wie im fraglichen Beispiel), müssen Sie möglicherweise auch eine Bundle-Konfiguration zu Ihrer App hinzufügen:

Fügen Sie Ihrem App_Start-Ordner Bundle Config hinzu:

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

Fügen Sie Ihrer Global.asax.cs die folgende Zeile hinzu

BundleConfig.RegisterBundles(BundleTable.Bundles);
4
DivineOps

Wie gesagt hier :

  1. Öffnen Sie den Ordner: Users\(Benutzer)\AppData\Local\Microsoft\VisualStudio (Version) 

  2. löschen Sie den Ordner: ComponentModelCache 

  3. starten Sie Visual Studio neu (ComponentModelCache wird neu erstellt, und das Problem wird behoben)

2
DeveloperDan

In Ihrem Projekt gibt es zwei Web-Konfigurationsdateien, die beide benötigen

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

In meinem Fall musste ich den Zielrahmen meines Projekts von 4.5 auf 4.5.1 ändern.

2
Bat_Programmer

1. Stellen Sie sicher, dass die Datei "System.Web.Optimization" in den Referenzen des Projekts umbenannt wird. Falls nicht, installieren Sie sie mit NuGet (Package Manager Console):

Install-Package Microsoft.AspNet.Web.Optimization

2. Fügen Sie den System.Web.Optimization-Namespace der "Views" web.config hinzu:

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

3. Wenn das Problem weiterhin besteht, schließen Sie Visual Studio, um den Cache zu aktualisieren.

0
Davood R.

Ich habe die Antwort hier gefunden Linkbeschreibung hier eingeben

anscheinend müssen Sie die web.optimization von Ihrem root-web.config hinzufügen.

0
PinoyDev