Il semble qu'il existe une incompatibilité 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 nouvelle édition communautaire VS 2013 et en parcourant le didacticiel W3Schools à l' adresse 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 didacticiel ou avec un version unique de VS.
Il est vrai que vous pouvez faire le message d'erreur se estompe en soulevant simplement le
@Scripts.Render("~/bundles/jqueryval")
ligne à partir des mises en page de création / modification qui ont été générées automatiquement par Visual Studio.
Mais cette solution ne s'attaque pas à la cause fondamentale et ne vous laisse pas dans un bon endroit pour faire plus que finir de parcourir le didacticiel. À 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 commentaire supprime de votre application.
Si vous utilisez VS pour créer un nouveau modèle pour vous, il crée également un ensemble de cinq fichiers View: Créer, Supprimer, Détails, Modifier et Index. Deux de ces vues, Créer et Modifier, sont destinées à permettre à l'utilisateur d'ajouter / de modifier des données pour les champs dans les enregistrements de base de données qui sous-tendent le modèle. Pour ces vues dans une vraie application, vous voudrez probablement faire une certaine quantité de validation de données à l'aide de la bibliothèque de validation jquery avant d'enregistrer l'enregistrement dans la base de données. C'est pourquoi VS ajoute les lignes suivantes
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
au fond de ces deux points de vue et pas d’autres. Le code généré automatiquement tente 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 de ligne correspondante au fichier _Layout.cshtml partagé ou, voir 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 de scripts (comme le font Créer et Modifier), il doit y avoir une commande RenderSection intégrée dans la mise en page. Si certains scripts ont la section et d'autres pas (contrairement à Delete, Details et Index), la commande RenderSection doit avoir le required: false
paramètre.
Donc, la meilleure solution, si vous voulez faire autre chose que simplement finir de parcourir le didacticiel, est d'ajouter l'instruction à _Layout.cshtml et non de supprimer le code des vues Modifier et Créer.
PS C'est un peu déroutant, ici, que ce qui est requis est dans un 'bundle' et que l'instruction require semble vouloir inclure un fichier dans un dossier bundles qui n'existe pas dans votre projet. Mais, pour les versions de débogage et les didacticiels, ce n'est pas pertinent car les fichiers fournis sont inclus un par un. Voir: http://www.asp.net/mvc/overview/performance/bundling-and-minification Le code qui est en cause ici est brièvement mentionné aux deux tiers environ de la page.