Je suis nouveau sur ASP MVC et j'utilise le didacticiel Introduction à 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, donc je ne sais même pas par où commencer pour résoudre ce problème et passer au didacticiel. J'apprécie toute aide que vous pouvez fournir.
Je suis dans la section Accéder aux données de votre modèle à partir d'un contrôleur et j'obtiens 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 mise en page> "~ / 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 sais pas si cela serait la cause première de mon problème.
Je sais que vous pouvez m'exiger d'inclure du code pour répondre à cela, mais je ne suis pas sûr du code à inclure. Veuillez indiquer le code que vous devez inclure le cas échéant et je serai heureux de l'ajouter à ma question.
Merci,
la source
@section
qui n'est PAS rendu dans le Layout (avecRenderSection
). Cela peut se produire si vous avez fait référenceLayout
à une mise en page incorrecte ou si vous avez oublié de référencer une mise en page. Voir la réponse de @ vonvRéponses:
Cela signifie que vous avez défini une section dans votre Layout.cshtml principal, mais que vous n'avez rien inclus pour cette section dans votre vue.
Si votre _Layout.cshtml a quelque chose comme ceci:
Ensuite, toutes les vues qui utilisent cette mise en page doivent inclure un
@section
avec le même nom (même si le contenu de la section est vide):Comme alternative, vous pouvez définir required sur false, vous ne serez pas obligé d'ajouter la section dans chaque vue,
ou vous pouvez également envelopper le
@RenderSection
dans unif
bloc,la source
, required: false)
ce dernier lui@RenderSection("scripts", required: false)
permettra d'être inclus ou non.@RenderSection("scripts", required: false)
dans le _Layout.cshtml généré est la bonne solution. (Voir la discussion ci-dessous pour savoir pourquoi.) De cette façon, vous pouvez ajouter le correctif dans un seul fichier, pas tous - un correctif beaucoup plus DRYer.En outre, vous pouvez ajouter la ligne suivante à
_Layout.cshtml
ou_Layout.Mobile.cshtml
:la source
J'ai eu un cas avec 3 niveaux a'la _ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml . Même en faisant comme ça:
_MainLayout.cshtml
_Middle.cshtml
et dans Page.cshtml définissant
J'aurais toujours l'erreur
Il s'est avéré que l'erreur était que Middle.cshtml s'appuie sur /Views/_ViewStart.cshtml pour résoudre sa mise en page parent. Le problème a été résolu en définissant ceci explicitement dans Middle.cshtml :
Impossible de décider si ce serait par conception ou un bogue dans MVC 4 - de toute façon, le problème a été résolu :)
la source
@section Foo {@RenderSection("Foo")}
pour "transmettre" les sections! Doit également transmettre le corps avec@RenderBody()
.Je ne sais pas pourquoi la réponse acceptée a été acceptée si la solution suggérée ne résout pas et ne résout pas le problème. Il peut en fait 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 obligatoire mais les vues héritées ne l'ont pas implémentée. Par exemple,Le modèle de mise en page
La vue héritée
Pas besoin d'afficher de code, considérez simplement qu'il n'y a pas d' implémentation de
@section OptionBox {}
sur la vue.L'erreur du problème n ° 1
Section not defined: "OptionBox ".
Problème n ° 2
La page maître (par exemple
_Layout.cshtml
) a une section définie et elle est requise ET la vue héritière l' a implémentée. Cependant, la vue d'implémentation a desscript
sections 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
L'erreur du problème n ° 2
The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"
Le problème du PO est similaire au problème n ° 2 et la réponse acceptée concerne le problème n ° 1.
la source
Je pense que notre solution était suffisamment différente de tout le monde, je vais donc la documenter ici.
Nous avons configuré la mise en page principale, une mise en page intermédiaire, puis le rendu final de la page d'action. Main.cshtml <- Config.cshtml <- Action.cshtml
Ce n'est que lorsque web.config a
customErrors='On/RemoteOnly'
eu une erreur personnalisée et aucune exception niApplication_Error
n'a été appelé. Je pourrais attraper cela enLayout = null
ligne dans Error.cshtml. L'exception était comme dans la question, la section des scripts manquants.Nous l'avons défini dans Main.cshtml (avec required: false) et Action.cshtml n'a rien écrit dans la section scripts.
La solution était d'ajouter
@section scripts { @RenderSection("scripts", false) }
à Config.cshtml.la source
Cela se produit essentiellement lorsque _Layout.cshtml est sans:
ou avec
SANS POUR AUTANT
Donc, ajoutez simplement @RenderSection ("scripts", requis: false) dans _Layout.cshtml et cela fonctionne spécialement pour les développeurs qui travaillent avec des projets générés par Kendoui.
la source
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
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.
la source
En travaillant sur le 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 dans le dossier partagé, la section «scripts» est mise en commentaire.
Décommentez simplement la ligne et l'exemple de code devrait fonctionner.
la source
J'ai le même problème lors de la mise en œuvre d'un tutoriel pour les débutants de MVC. J'ai reçu diverses suggestions pour modifier la @RenderSection dans votre fichier layout.cshtml mais je ne l'ai pas utilisé.
J'ai beaucoup cherché et j'ai trouvé que la balise de script générée dans un (View / Edit.cshtml) et un autre fichier cshtml ne rendait pas
} **
J'ai donc supprimé ces lignes et l'application a commencé à fonctionner correctement.
la source
J'ai également commenté ** @ section Scripts que cela fonctionne bien. :)
la source
J'ai recherché l'erreur sur le Web et 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.
la source
J'ai l'impression que vous rendez votre section à partir d'une @section dans le fichier _Layout qui fait référence à une vue partielle avec une @section, c'est-à-dire que vous avez imbriqué une @section dans une @section. Dans le fichier _Layout, supprimez la @section autour de la section de rendu.
la source
J'ai résolu ce problème en utilisant ce qui suit,
la source
Pour moi, le problème était dans mon _Layout.cshtml J'ai RenderSection dans une condition
et à mon avis d'enfant c'était sans condition
donc quel que soit le thème, l'enfant ajoutait le pied de page. Mais dans le parent, lorsque le thème n'est pas rouge ou vert, il n'ajoutait pas le pied de page et une exception non gérée était levée.
la source
vérifier l’épellation et les majuscules / minuscules du terme ""
chaque fois que nous écrivons @RenderSection ("name", obligatoire: false) assurez-vous que la vue rasoir Contient une section @section name {} donc vérifiez l'orthographe et les majuscules / minuscules du terme "" Correct dans ce cas est "Scripts"
la source
Veuillez vous assurer que vous avez saisi l'orthographe correcte de l'utilisation de la section de script dans la vue
le correct est
si vous avez tapé
@section script{ //your script here}
c'est faux.la source