122 votes

Les sections suivantes ont été définies mais n'ont pas été rendues pour la page de présentation "~/Views/Shared/_Layout.cshtml" : "scripts"

Je suis novice en ASP MVC et j'utilise le tutoriel Intro to ASP MVC 4 Beta. http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

Je rencontre une erreur à laquelle je n'arrive pas à trouver de réponse et je n'ai pas beaucoup d'expérience en programmation. Je ne sais donc pas par où commencer pour résoudre ce problème et poursuivre le tutoriel. Je vous remercie de l'aide que vous pourrez m'apporter.

Je suis dans la section Accessing Your Model's Data from a Controller et j'obtiens cette erreur lorsque j'essaie de créer un film dans le cadre du tutoriel, je clique sur le lien "Create New" et j'obtiens l'erreur suivante

Les sections suivantes ont été définies mais n'ont pas été rendues pour la page de présentation > "~/Views/Shared/_Layout.cshtml" : "scripts"

Plutôt que d'utiliser Visual Studio express, j'ai choisi de télécharger Visual Studio 2012 RC (je ne suis pas sûr que ce soit la cause première de mon problème).

Je sais que vous pouvez me demander d'inclure du code pour répondre à cette question, mais je ne suis pas sûr du code à inclure. Veuillez m'indiquer le code que vous souhaitez que j'inclue, le cas échéant, et je me ferai un plaisir de l'ajouter à ma question.

Nous vous remercions,

10voto

agunn Points 293

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.

8voto

JMJ Points 21

Il se produit essentiellement lorsque _Layout.cshtml n'existe pas :

@RenderSection("scripts", required: false)

ou avec

@RenderSection("scripts")  

SANS

required: false

S @RenderSection("scripts", required : false) dans _Layout.cshtml et cela fonctionne spécialement pour les développeurs qui travaillent avec Kendoui des projets générés.

3voto

Rick M. Points 1

En travaillant sur le tutoriel ASP.NET MVC 4 avec Visual Studio 2012, j'ai rencontré la même erreur dans la section "Accéder aux données de votre modèle à partir d'un contrôleur". La solution est assez simple.

Lors de la création d'une nouvelle application Web ASP.NET MVC 4 dans Visual Studio 2012, dans le document _Layout.cshtml du dossier partagé, la section "scripts" est commentée.

    @*@RenderSection("scripts", required: false)*@

Décommentez simplement la ligne et l'exemple de code devrait fonctionner.

    @RenderSection("scripts", required: false)

3voto

UchiTesting Points 71

Je viens d'obtenir cette erreur et j'ai lu que la raison en est que vous devez rendre une section script. Mais dans _Layout c'était déjà comme ça.

@RenderSection("Scripts", required: false)

Il fonctionnait également avant que je n'ajoute la section au bas de la page.

Dans mon cas, il s'agissait d'une simple faute d'orthographe Scripts .

@section Scripts{
<script src="~/js/myScript.js"></script>
}

2voto

user3918423 Points 1

Je rencontre le même problème lors de la mise en place d'un tutoriel pour les débutants en MVC. J'ai reçu plusieurs suggestions pour modifier la section @RenderSection dans votre fichier layout.cshtml, mais je ne l'ai pas utilisée.

J'ai fait beaucoup de recherches et j'ai découvert que la balise script générée dans un fichier (View/Edit.cshtml) et dans d'autres fichiers cshtml ne s'affichait pas.

**@section Scripts {
@Scripts.Render("~/bundles/jqueryval")

}**

J'ai donc supprimé ces lignes et l'application a commencé à fonctionner correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X