Ich habe gerade ein ASP.NET MVC 4-Projekt erstellt und Visual Studio 2012 RC verwendet, um einen Controller und Rasiermesseransichten für Index
und Create
Aktionen zu erstellen .
Als ich die Anwendung ausführte und zur Create
Ansicht navigierte, wurde der folgende Fehler angezeigt:
Compiler-Fehlermeldung: CS0103: Der Name 'Scripts' ist im aktuellen Kontext nicht vorhanden
Das Problem ist der folgende Code, der automatisch am unteren Rand der Ansicht hinzugefügt wurde:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Warum gibt es keine Skripte?
Ich habe mir die Basis-Webseitenklasse in Assembly System.Web.Mvc.dll, v4.0.0.0 angesehen
Ich kann die folgenden verfügbaren Hilfseigenschaften sehen:
- Ajax
- Html
- Url
Aber nichts namens Skripte.
Irgendwelche Ideen?
BEARBEITEN:
Meine Web.config-Datei sieht folgendermaßen aus (unberührt von der von Visual Studio erstellten):
<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>
EDIT # 2:
Die Leute bloggen über die Verwendung des @Scripts
Helfers:
Nachdem ich Visual Studio 2012 RC gerade auf einer neuen Windows 8-Installation installiert habe, kann ich es immer noch nicht verwenden @Scripts
, obwohl Visual Studio es der generierten Ansicht hinzufügt!
Die Lösungen werden unten vorgestellt.
Ich bin nicht sicher, wie ich das schließen soll, da am Ende ein Update das Problem zu lösen schien. Ich habe doppelt überprüft, ob ich eine Neuinstallation mit einem neuen Projekt durchgeführt habe. Aber das gleiche fehlgeschlagene Projekt, das ich gemacht hatte, funktioniert jetzt nach verschiedenen Updates und ohne manuelle offensichtliche Intervention einwandfrei. Danke für all die Gedanken, aber es gab definitiv ein Problem zu der Zeit;)
quelle
<system.web.webPages.razor> <pages pageBaseType=""> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> etc... </pages>
Antworten:
Der Schlüssel hier ist hinzuzufügen
zu BEIDEN web.config-Dateien. Mein Szenario war, dass ich sowohl im Projekt als auch in der main / root web.config eine System.Web.Optimization-Referenz hatte, aber @Scripts funktionierte immer noch nicht richtig. Sie müssen den Namespace-Verweis zur Datei "views web.config" hinzufügen, damit dies funktioniert.
AKTUALISIEREN:
Seit der Veröffentlichung von MVC 4 ist System.Web.Optimization veraltet. Wenn Sie mit einer leeren Lösung beginnen, müssen Sie das folgende Nuget-Paket installieren:
Sie müssen in Ihren web.config-Dateien weiterhin auf System.Web.Optimization verweisen. Weitere Informationen finden Sie in diesem Thema:
So fügen Sie einen Verweis auf System.Web.Optimization für die MVC-3-konvertierte in 4-App hinzu
Wie viele betonten, könnte nach den obigen Schritten ein Neustart von VS erforderlich sein, damit dies funktioniert.
quelle
Install-Package Microsoft.AspNet.Web.Optimization
eine leere ASP.NET MVC4-Vorlage ausführen, da diese standardmäßig nicht enthalten ist.@Styles
und@Scripts
sind 2 neue Helfer von derSystem.Web.Optimization
Bibliothek zur Verfügung gestellt. Wie der Name schon sagt, bündeln und minimieren sie CSS- bzw. JavaScript-Dateien bzw. -Ressourcen.Versuchen Sie, den Namespace
System.Web.Optimization
entweder per@using
Direktive oder durch einzuschließenweb.config
http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinificationAKTUALISIEREN
Microsoft hat die Bündelung / Minimierung in ein separates Paket namens verschoben
Microsoft.AspNet.Web.Optimization
. Sie können die Baugruppe von nuget herunterladen .Dieser Beitrag wird Ihnen nützlich sein.
quelle
System.Web.Optimization
Namespace ist NICHT veraltet, dasSystem.Web.Optimization.dll
ist.Es fehlte ein kleiner Schritt oben, den ich in einem anderen Beitrag gefunden habe. Nach dem Hinzufügen
Schließen Sie Visual Studio in Ihren
~/Views/web.config
Namespaces und öffnen Sie es erneut. Das musste ich tun, damit das funktioniert.quelle
Ich verwende Bereiche und bin gerade auf dieses Problem gestoßen. Ich habe gerade die Namespaces aus der root-Datei web.config in das Bereich-Web kopiert. config und es funktioniert jetzt !!
quelle
Ich hatte das gleiche Problem und habe WinMerge verwendet, um dies aufzuspüren. Aber als ich mehr darüber recherchierte, stellte ich fest, dass Rick den perfekten Blog-Beitrag dafür hat.
Zusammenfassung:
<add namespace="System.Web.Optimization"/>
beiden web.config - DateienInstall-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
quelle
Ich hatte das gleiche Problem:
Die von mir verwendete System.Web.Optimization-Version war für MVC4 RC veraltet.
Ich habe meine Pakete mit dem Paketmanager in VS 2010 aktualisiert.
In diesem MSDN-Blog spricht Herr Andy darüber, wie Sie Ihr MVC 4 Beta-Projekt auf MVC 4 RC aktualisieren können. Durch das Aktualisieren meiner Pakete konnten die Skripte (insbesondere das Skript zur Weboptimierung) für mich aufgelöst werden:
Verwenden Sie zum Installieren des neuesten System.Web.Optimization-Pakets die Package Manager-Konsole (Tools -> Library Package Manager -> Package Manager-Konsole) und führen Sie den folgenden Befehl aus:
Verwenden Sie die im Paket enthaltene Datei System.Web.Optimization in Ihren Referenzen.
So aktualisieren Sie andere Pakete: Menü Extras -> Bibliothekspaket-Manager -> NuGet-Pakete für Lösung verwalten.
quelle
Erstellen Sie eine neue MVC 4 RC-Internetanwendung und führen Sie sie aus. Navigieren Sie zu Login, das denselben Code verwendet
Login.cshtml funktioniert in der Datei Views \ Web.config (nicht in der App-Stammversion)
Warum funktioniert Ihre Ansicht "Erstellen" nicht und die Anmeldung funktioniert?
quelle
Importieren Sie System.Web.Optimization wie folgt über Ihre Rasiereransicht:
quelle
Ich bin jedoch auf dieses Problem gestoßen, als ich den Befehl ausgeführt habe:
Ich habe die kryptische Nachricht erhalten (ich muss ein tolles Wortspiel vor der ersten Tasse Kaffee lieben):
Ich führe dies unter Windows XP SP3 aus (nicht nach Wahl) und stellte fest, dass ich den Anweisungen des Benutzers artsnob im ASP.NET-Forum folgen musste
Sobald ich dies ausgeführt habe, konnte ich die Befehlszeile ausführen, um die Web.Optimization zu aktualisieren.
Hoffe, das erspart jemandem das Graben.
quelle
Einfach schreiben
quelle
Ich habe ein Upgrade von Beta auf RC durchgeführt und es gab kein Problem mit "Skripten". Überall im Internet gesurft und die endgültige Lösung ist das, was N40JPJ sagte, plus eine weitere Workaroudn:
Kopieren Sie Folgendes in View \ Web.config:
und das Folgende in View \ Shared_Layout.cshtml
Ich hoffe es hilft.
quelle
if (IsSectionDefined())
wenn Sie eineelse
Klausel angeben. Die Tatsache, dass Sierequired: false
bereits sagen, ermöglicht, dass dieser Abschnitt nicht definiert wird, und in diesem Fall wird der Abschnitt weggelassen. Dies ist also kein unnötiger zusätzlicher Code.Anscheinend haben Sie einen Projekttyp "Leer" ohne Ordner "Skripte" erstellt. Mein Rat: Erstellen Sie einen Projekttyp "Basic" mit dem vollständigen Ordner "Scripts".
In Bezug auf alle Entwickler.
quelle
Entfernen / verbergen Sie einfach den Code aus der Rasieransicht Ihres Controllers zum Erstellen und Bearbeiten.
quelle
Viel Glück...
quelle
Eine weitere für den Pot - er hat ewig versucht, das gleiche Problem zu lösen - obwohl sie in der web.config für root und root von Views definiert wurde. Es stellte sich heraus, dass ich es fälschlicherweise dem Element
<system.web><pages><namespaces>
und nicht dem<system.web**.webPages.razor**><pages><namespaces>
Element hinzugefügt hatte .Wirklich leicht zu übersehen!
quelle
Wenn ich eine Seite betrete, die diesen Code enthält:
Dieser Fehler tritt auf: Fehler. Während Ihrer Anfrage ist ein Fehler aufgetreten.
Und diese Ausnahme wird in meinen Protokollen aufgezeichnet:
Ich habe alle Tipps auf dieser Seite ausprobiert und keiner von ihnen wurde für mich gelöst. Also habe ich in meinem Paketordner nachgesehen und festgestellt, dass ich zwei Versionen für System.Web.Optmization.dll habe:
Mein Projekt bezog sich auf die ältere Beta-Version. Ich habe nur den Verweis auf die neuere Version (69 KB) geändert und alles hat gut funktioniert.
Ich denke, es könnte jemandem helfen.
quelle
Das hat eine offensichtliche Lösung. Ich hatte später das gleiche Problem. Nicht im Zusammenhang mit Baugruppenreferenzen oder ... Es tritt beim Aufrufen von MVC-Teilansichten in Hierarchien auf, wenn Sie komplizierte Seitenstrukturen haben. Wenn Sie also jeden Teil auf jeder Seite einzeln aufrufen / rendern (möglicherweise eine Masterseite oder einen Teil davon), werden die erforderlichen Teile der Seite wie der folgende Code nicht angezeigt:
Dadurch wird die Seite einfach gezwungen, einen verwandten Abschnitt zu finden und zu rendern, und im Fehlerfall wird eine Fehlermeldung wie Sie angezeigt.
Daher empfehle ich Ihnen, Ihre Seiten (wie die Programmablaufverfolgung) vom Master bis zu allen Partials zu verfolgen, um Abhängigkeiten zu erkennen . Vielleicht ist es eine schreckliche Arbeit, aber hier gibt es keine anderen Möglichkeiten.
Nicht, dass meiner Erfahrung nach einige bedingte Situationen in der Programmierung dazu führen, dass nicht der richtige Fehler angezeigt wird, was das Problem verursacht.
quelle
Ich hatte dieses Problem, nachdem ich einem Projekt einen Bereich hinzugefügt hatte, der keinen hatte. Um es loszuwerden, kopierte einfach die Datei web.config mit dem Stammordner Views in den Ordner Views des Bereichs und es begann zu funktionieren.
quelle
Ich löse dieses Problem in MvcMusicStore, indem ich diesen Teil des Codes in _Layout.cshtml hinzufüge
und entfernen Sie diesen Code aus Edit.cshtml
Führen Sie das Programm aus, inshallah wird mit Ihnen zusammenarbeiten.
quelle
Für mich löste dies das Problem, in der NuGet-Paketmanager-Konsole schreiben Sie Folgendes:
quelle
Als ich kürzlich anfing, MVC4 zu verwenden, war ich beim Erstellen eines Projekts mit den leeren Vorlagen mit dem oben genannten Problem konfrontiert. Schritte zur Behebung des Problems.
TOOLS
->Library Package Manager
->Packager Manager Console
Fügen Sie den folgenden Befehl ein und drücken Sie die Eingabetaste.Install-Package Microsoft.AspNet.Web.Optimization
Hinweis: Warten Sie auf die erfolgreiche Installation.<namespace="System.Web.Optimization" />
Das in Schritt 1 erwähnte Paket fügt den Lösungsreferenzen wie System.Web.Optimization nur wenige Systembibliotheken hinzu. Dies ist keine Standardreferenz für leere Vorlagen in MVC4.
Ich hoffe das hilft. Danke dir
quelle
Ich hatte einen sehr ähnlichen Fehler beim Upgrade eines Projekts von MVC3 auf MVC4.
In meinem Fall hatte ich in mehreren meiner Web.Configs veraltete Versionsnummern.
Ex:
Überprüfen Sie unbedingt die Web.Configs in jedem Ihrer Views-Verzeichnisse.
Weitere Informationen zum Aktualisieren eines ASP.NET MVC 3-Projekts auf ASP.NET MVC 4 finden Sie hier .
quelle
Wenn Sie Ihrer web.config hinzugefügt haben und die Meldung weiterhin angezeigt wird, müssen Sie Ihr Projekt schließen und erneut öffnen. Jetzt ist es vorhanden und @ Styles.Render ("") und @ Scripts.Render () funktionieren einwandfrei.
quelle
Versuche dies:
quelle