Il semble qu'il y ait un décalage entre les fichiers View que certaines versions de Visual Studio génèrent automatiquement pour vous lorsque vous l'utilisez pour créer un nouveau modèle. J'ai rencontré ce problème en utilisant la commande nouveau VS 2013 Community Edition et en parcourant le tutoriel de W3Schools à l'adresse suivante http://www.w3schools.com/aspnet/mvc_app.asp mais les commentaires ci-dessus indiquent que ce n'est pas un problème avec les instructions du tutoriel ou avec une seule version de VS.
Il est vrai que vous pouvez faire en sorte que le message d'erreur s'en aller en supprimant simplement le
@Scripts.Render("~/bundles/jqueryval")
à partir des modèles de création/modification générés automatiquement par Visual Studio.
Mais cette solution ne s'attaque pas à la cause première et ne vous permet pas de faire plus que de terminer le tutoriel. À un moment donné (probablement assez tôt) dans le développement d'une application réelle, vous allez vouloir accéder au code de validation jquery que la solution de mise en commentaire supprime de votre application.
Si vous utilisez VS pour créer un nouveau modèle, il crée également un ensemble de cinq fichiers View : Créer, Supprimer, Détails, Modifier et Index. Deux de ces vues, Create et Edit, sont destinées à permettre à l'utilisateur d'ajouter/modifier des données pour les champs des enregistrements de la base de données qui sous-tendent le modèle. Pour ces vues dans une application réelle, vous voudrez probablement valider les données en utilisant la bibliothèque de validation jquery avant de sauvegarder l'enregistrement dans la base de données. C'est pourquoi VS ajoute les lignes suivantes
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
au bas de ces deux vues et pas d'autres. Le code autogénéré essaie de rendre la bibliothèque de validation disponible pour ces vues, mais pas pour les autres.
L'erreur se produit parce que VS n'ajoute pas la ligne correspondante au fichier partagé _Layout.cshtml ou, comme le montre une réponse ci-dessus, l'ajoute mais la laisse en commentaire. Cette ligne est
@RenderSection("scripts", required: false)
Si certaines de vos vues ont une section scripts (comme Create et Edit), il doit y avoir une commande RenderSection intégrée dans la mise en page. Si certains scripts comportent une section et d'autres non (comme Delete, Details et Index), la commande RenderSection doit avoir l'attribut required: false
paramètre.
La meilleure solution, si vous voulez faire quelque chose de plus que de terminer le tutoriel, est d'ajouter la déclaration à _Layout.cshtml et de ne pas supprimer le code des vues Modifier et Créer.
P.S. Le fait que ce qui est demandé se trouve dans un "bundle" et que l'instruction require semble essayer d'inclure un fichier dans un dossier bundles qui n'existe pas dans votre projet est un peu déroutant. Mais, pour les constructions de débogage et les tutoriels, ce n'est pas pertinent puisque les fichiers groupés sont inclus un par un. Voir : http://www.asp.net/mvc/overview/performance/bundling-and-minification Le code dont il est question ici est brièvement mentionné aux deux tiers de la page.