Es scheint, dass zwischen den Ansichtsdateien, die einige Versionen von Visual Studio automatisch für Sie generieren, wenn Sie damit ein neues Modell erstellen, eine Nichtübereinstimmung besteht. Ich habe dieses Problem mit der neuen VS 2013 Community Edition festgestellt und bin durch das W3Schools-Tutorial unter http://www.w3schools.com/aspnet/mvc_app.asp gegangen obigen Kommentare weisen jedoch darauf hin, dass es kein Problem mit den Anweisungen des Tutorials oder mit a ist Einzelversion von VS.
Es ist wahr , dass Sie die Fehlermeldung machen weggehen die nur durch das Entfernen
@Scripts.Render("~/bundles/jqueryval")
Zeile aus den Layouts zum Erstellen / Bearbeiten, die von Visual Studio automatisch generiert wurden.
Diese Lösung behebt jedoch nicht die Grundursache und lässt Sie nicht an einem guten Ort zurück, um mehr zu tun, als das Tutorial zu Ende zu gehen. Irgendwann (wahrscheinlich ziemlich früh) in der Entwicklung einer echten Anwendung möchten Sie Zugriff auf den JQuery-Validierungscode, den die auskommentierende Lösung aus Ihrer App entfernt.
Wenn Sie mit VS ein neues Modell für Sie erstellen, werden außerdem fünf Ansichtsdateien erstellt: Erstellen, Löschen, Details, Bearbeiten und Indexieren. Mit zwei dieser Ansichten, Erstellen und Bearbeiten, kann der Benutzer Daten für die Felder in Datenbankeinträgen hinzufügen / bearbeiten, die dem Modell zugrunde liegen. Für diese Ansichten in einer realen App möchten Sie wahrscheinlich eine gewisse Datenüberprüfung mithilfe der jquery-Überprüfungsbibliothek durchführen, bevor Sie den Datensatz in der Datenbank speichern. Aus diesem Grund fügt VS die folgenden Zeilen hinzu
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
auf den Grund dieser beiden Ansichten und nicht andere. Der automatisch generierte Code versucht, die Validierungsbibliothek für diese Ansichten verfügbar zu machen, nicht jedoch für die anderen.
Der Fehler tritt auf, weil VS der freigegebenen Datei _Layout.cshtml entweder keine entsprechende Zeile hinzufügt oder, siehe eine Antwort oben, diese hinzufügt, sie jedoch auskommentiert. Diese Zeile ist
@RenderSection("scripts", required: false)
Wenn einige Ihrer Ansichten einen Skriptabschnitt enthalten (wie beim Erstellen und Bearbeiten), muss ein RenderSection-Befehl in das Layout eingebettet sein. Wenn einige Skripte den Abschnitt haben und andere nicht (wie Löschen, Details und Index nicht), muss der Befehl RenderSection den required: falseParameter haben.
Die beste Lösung, wenn Sie mehr als nur das Tutorial beenden möchten, besteht darin, die Anweisung zu _Layout.cshtml hinzuzufügen und den Code nicht aus den Ansichten Bearbeiten und Erstellen zu entfernen.
PS: Es ist ein bisschen verwirrend, dass sich das, was benötigt wird, in einem 'Bundle' befindet und die require-Anweisung so aussieht, als würde versucht, eine Datei in einen Bundles-Ordner aufzunehmen, der in Ihrem Projekt nicht vorhanden ist. Für Debug-Builds und Tutorials ist dies jedoch nicht relevant, da die gebündelten Dateien einzeln enthalten sind. Siehe: http://www.asp.net/mvc/overview/performance/bundling-and-minification Der hier in Rede stehende Code wird kurz auf etwa zwei Dritteln der Seite erwähnt.