Sembra che ci sia una mancata corrispondenza tra i file di visualizzazione che alcune versioni di Visual Studio generano automaticamente quando lo si utilizza per creare un nuovo modello. Ho riscontrato questo problema utilizzando la nuova VS 2013 Community Edition e seguendo il tutorial W3Schools su http://www.w3schools.com/aspnet/mvc_app.asp ma i commenti sopra indicano che non è un problema con le istruzioni del tutorial o con un versione singola di VS.
E 'vero che si può fare il messaggio di errore andare via semplicemente rimuovendo il
@Scripts.Render("~/bundles/jqueryval")
riga dai layout di creazione / modifica che sono stati generati automaticamente da Visual Studio.
Ma quella soluzione non affronta la causa principale né ti lascia in una buona posizione per fare di più che finire di camminare attraverso il tutorial. Ad un certo punto (probabilmente abbastanza presto) nello sviluppo di un'applicazione reale, vorrai accedere al codice di convalida jquery che la soluzione di commento rimuove dalla tua app.
Se utilizzi VS per creare un nuovo modello, crea anche un set di cinque file di visualizzazione: Crea, Elimina, Dettagli, Modifica e Indice. Due di queste viste, Crea e Modifica, hanno lo scopo di consentire all'utente di aggiungere / modificare i dati per i campi nei record del database che sono alla base del modello. Per quelle viste in un'app reale, probabilmente vorrai eseguire una certa quantità di convalida dei dati utilizzando la libreria di convalida jquery prima di salvare il record nel db. Ecco perché VS aggiunge le seguenti righe
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
in fondo a queste due visualizzazioni e non ad altre. Il codice generato automaticamente sta tentando di rendere disponibile la libreria di convalida per quelle viste, ma non per le altre.
L'errore si verifica perché VS non aggiunge una riga corrispondente al file _Layout.cshtml condiviso o, vedi una risposta sopra, la aggiunge ma la lascia commentata. Questa linea è
@RenderSection("scripts", required: false)
Se alcune delle tue viste hanno una sezione di script (come Crea e Modifica), ci deve essere un comando RenderSection incorporato nel layout. Se alcuni script hanno la sezione e altri no (come Elimina, Dettagli e Indice no), il comando RenderSection deve avere il required: false
parametro.
Quindi la soluzione migliore, se vuoi fare qualcosa di più che finire di camminare attraverso il tutorial, è aggiungere l'istruzione a _Layout.cshtml e non rimuovere il codice dalle viste Modifica e Crea.
PS È un po 'un po' confuso, qui, il fatto che ciò che viene richiesto sia in un "bundle" e l'istruzione require sembra che stia cercando di includere un file in una cartella di bundle che non esiste nel progetto. Tuttavia, per build di debug e tutorial, ciò non è rilevante poiché i file in bundle vengono inclusi uno alla volta. Vedere: http://www.asp.net/mvc/overview/performance/bundling-and-minification Il codice in questione qui è menzionato brevemente a circa due terzi della pagina.