Les sections suivantes ont été définies mais n’ont pas été rendues pour la page de disposition “~ / Views / Shared / _Layout.cshtml”: “Scripts”

Je suis nouveau sur 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 que je n’arrive pas à trouver une réponse et que je n’ai pas beaucoup d’expérience en matière de programmation, alors je ne sais pas où commencer à résoudre ce problème. J’apprécie toute aide que vous pouvez fournir.

Je suis dans la section Accès aux données de votre modèle depuis un contrôleur et je reçois cette erreur lorsque je tente de créer un film dans le cadre du didacticiel, je clique sur le lien “Créer un nouveau” et j’obtiens l’erreur suivante

Les sections suivantes ont été définies mais n’ont pas été rendues pour la page de disposition> “~ / Views / Shared / _Layout.cshtml”: “Scripts”

Plutôt que d’utiliser Visual Studio express, j’ai opté pour le téléchargement de Visual Studio 2012 RC (je ne sais pas si cela serait la cause de mon problème).

Je me rends compte que vous pouvez exiger que j’inclus le code pour répondre à cette question, mais je ne suis pas sûr de savoir quel code inclure. S’il vous plaît aviser quel code vous avez besoin d’inclure, le cas échéant et je serai heureux de l’append à ma question.

Je vous remercie,

Cela signifie que vous avez défini une section dans votre fichier maître Layout.cshtml, mais vous n’avez rien inclus pour cette section dans votre vue.

Si votre _Layout.cshtml a quelque chose comme ça:

@RenderSection("scripts") 

Ensuite, toutes les vues qui utilisent cette disposition doivent inclure une @section du même nom (même si le contenu de la section est vide):

 @{ ViewBag.Title = "Title"; Layout = "~/Views/Shared/_Layout.cshtml"; } @section scripts{ // Add something here } 

En alternative, vous pouvez définir la valeur false sur false, vous n’aurez pas à append la section dans chaque vue,

 @RenderSection("scripts", required: false) 

ou aussi vous pouvez envelopper le @RenderSection dans un bloc if ,

 @if (IsSectionDefined("scripts")) { RenderSection("scripts"); } 

En outre, vous pouvez append la ligne suivante au _Layout.cshtml ou _Layout.Mobile.cshtml :

 @RenderSection("scripts", required: false) 

J’ai eu un cas avec 3 niveaux a’la _ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml . Même si faire comme ça:

_MainLayout.cshtml

  @RenderSection("head", false)  

_Middle.cshtml

 @section head { @RenderSection("head") } 

et dans Page.cshtml définissant

 @section head { ***content*** } 

J’aurais toujours l’erreur

Les sections suivantes ont été définies mais n’ont pas été rendues pour la page de disposition “~ / Views / Shared / _Middle.cshtml”: “head”.

En fin de compte, l’erreur était que le fichier Middle.cshtml s’appuyait sur /Views/_ViewStart.cshtml pour résoudre sa mise en page parente. Le problème a été résolu en le définissant explicitement dans Middle.cshtml :

 @{ Layout = "~/Views/_Shared/_MainLayout.cshtml"; } 

Je ne peux pas décider si ce serait un sous-design ou un bogue dans MVC 4 – de toute façon, le problème a été résolu 🙂

Je ne sais pas pourquoi la réponse acceptée a été acceptée si la solution proposée ne résout pas le problème. Il peut effectivement y avoir deux problèmes liés à ce sujet.

Numéro 1

La page maître (par exemple, _Layout.cshtml ) a une section définie et elle est requirejse, mais les vues héritées ne l’ont pas implémentée. Par exemple,

Le modèle de mise en page

  @* Visible only to admin users *@ 
@* this section is required due to the absence of the second parameter *@ @RenderSection("OptionBox")

La vue héritée

Pas besoin de montrer de code, considérez simplement qu’il n’y a pas d’ implémentation de @section OptionBox {} sur la vue.

L’erreur du numéro 1

Section not defined: "OptionBox ".

Numéro 2

La page maître (par exemple, _Layout.cshtml ) a une section définie et elle est requirejse ET la vue _Layout.cshtml a implémentée. Cependant, la vue d’implémentation comporte des sections de script supplémentaires qui ne sont définies sur aucune de ses pages maîtres.

Le modèle de mise en page

same as above

La vue héritée

 

Looks like the Lakers can still make it to the playoffs

@section OptionBox { Go and reserve playoff tickets now } @section StatsBox {
  • 1. San Antonio
  • 8. LA Lakers
}

L’erreur pour le problème n ° 2

The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"

La question du PO est similaire à la question n ° 2 et la réponse acceptée concerne la question n ° 1.

Il se produit essentiellement lorsque _Layout.cshtml est sans:

 @RenderSection("scripts", required: false) 

ou avec

 @RenderSection("scripts") 

SANS POUR AUTANT

 required: false 

Donc, ajoutez simplement @RenderSection (“scripts”, requirejs: false) dans _Layout.cshtml et cela fonctionne spécialement pour les développeurs qui travaillent avec les projets de Kendoui.

Je pense que notre solution était suffisamment différente de tout le monde, donc je vais la documenter ici.

Nous avons la configuration de la mise en page principale, une mise en page intermédiaire et ensuite le rendu final de la page d’action. Main.cshtml <- Config.cshtml <- Action.cshtml

Ce n’est que lorsque web.config avait customErrors='On/RemoteOnly' nous avons reçu une erreur personnalisée et qu’aucune exception ni Application_Error n’a été appelée. Je pourrais attraper cela sur Layout = null ligne vide dans le fichier Error.cshtml. L’exception était comme dans la question, la section des scripts manquants.

Nous l’avons fait défini dans Main.cshtml (avec obligatoire: false) et Action.cshtml n’avait rien dans la section scripts.

La solution consistait à append des @section scripts { @RenderSection("scripts", false) } à Config.cshtml.

Il semble y avoir une incompatibilité entre les fichiers View que certaines versions de Visual Studio génèrent automatiquement lorsque vous l’utilisez pour créer un nouveau modèle. J’ai rencontré ce problème en utilisant la nouvelle édition de la communauté 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 version unique de VS.

Il est vrai que vous pouvez supprimer le message d’erreur en supprimant simplement le message d’erreur.

@Scripts.Render("~/bundles/jqueryval")

ligne à partir des dispositions de création / modification générées automatiquement par Visual Studio.

Mais cette solution ne résout pas le problème ou ne vous permet pas de faire plus que terminer 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, Create et Edit, permettent à l’utilisateur d’append / modifier des données pour les champs des enregistrements de firebase database sous-jacents au modèle. Pour ces vues dans une application réelle, vous souhaiterez probablement effectuer une certaine quantité de validation des données à l’aide de la bibliothèque de validation jquery avant de sauvegarder l’enregistrement dans la firebase database. C’est pourquoi VS ajoute les lignes suivantes

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

au bas 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 les autres.

L’erreur se produit car VS n’ajoute pas une 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 scripts (comme Create et Edit font), une commande RenderSection doit être intégrée à la présentation. Si certains scripts ont la section et que d’autres ne le font pas (comme Delete, Details et Index ne le font pas), la commande RenderSection doit avoir le paramètre required: false .

Donc, la meilleure solution, si vous voulez faire autre chose que terminer simplement le didacticiel, consiste à append l’instruction à _Layout.cshtml et non à supprimer le code des vues Éditer et Créer.

PS C’est un peu un confuser, ici, ce qui est requirejs est dans un “bundle” et l’instruction require ressemble à essayer d’inclure un fichier dans un dossier bundles qui n’existe pas dans votre projet. Mais, pour les versions et les didacticiels de débogage, cela n’est pas pertinent puisque les fichiers fournis sont inclus un par un. Voir: http://www.asp.net/mvc/overview/performance/bundling-and-minification Le code en question est mentionné brièvement aux deux tiers environ de la page.

Lors de l’utilisation du didacticiel ASP.NET MVC 4 avec Visual Studio 2012, j’ai rencontré la même erreur dans la section “Accès aux données de votre modèle à partir d’un contrôleur”. Le correctif 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 mise en commentaire.

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

Il suffit de dé-commenter la ligne et l’exemple de code devrait fonctionner.

  @RenderSection("scripts", required: false) 

J’ai le même problème en mettant en place un tutoriel pour les débutants de MVC. J’ai eu diverses suggestions pour modifier le fichier @RenderSection dans votre fichier layout.cshtml, mais je ne l’ai pas utilisé.

J’ai beaucoup de recherche et puis j’ai trouvé que la balise de script générée dans un (View / Edit.cshtml) et un autre fichier cshtml ne rend pas

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

} **

J’ai donc supprimé ces lignes et l’application a commencé à fonctionner sans problème.

J’ai cherché l’erreur sur le web et je suis arrivé sur cette page. J’utilise Visual Studio 2015 et c’est mon premier projet MVC.

Si vous manquez le symbole @ avant la section de rendu, vous obtiendrez la même erreur. Je voudrais partager ceci pour les futurs débutants.

  @RenderSection("headscripts", required: false) 

J’ai l’impression que vous restituez votre section depuis une @section du fichier _Layout qui fait référence à une vue partielle avec une @section, c’est-à-dire que vous avez nested une @section dans une @section. Dans le fichier _Layout, supprimez la @section autour de la rendu.

Assurez-vous d’avoir saisi l’orthographe correcte de la section de script dans la vue

le correct est

 @section scripts{ //your script here} 

Si vous avez tapé le @section script{ //your script here} c’est faux.

vérifier l’épellation et la majuscule / minuscule du terme “”

quand on écrit @RenderSection (“name”, requirejs: false), assurez-vous que la vue du razor contient un nom de section @section {} vérifiez donc le “épilation” et la majuscule / minuscule du terme “”