web-dev-qa-db-fra.com

MVC @RenderSection "des sections ont été définies mais n'ont pas été rendues". Lorsque plusieurs niveaux de page

Je travaille avec MVC v4.
J'ai une page '_BootstrapLayout' qui définit tous les trucs Twitter bootstrap etc. .

_BootstrapLayout.cshtml

_MainPage.cshtml @ {Layout = "~/Views/Shared/_BootstrapLayout.cshtml"; }

Index.cshtml @ {Layout = "~/Views/Shared/_MainPage.cshtml";}

Page maître -> Page principale -> Page (s) du site

La page _BootstrapLayout contient une section de rendu pour les scripts

@RenderSection("scripts", required: false)

Je veux ajouter une section de scripts à la page Index.cshtml, mais quand je le fais, je reçois l'exception

@section scripts {
    <script type="text/javascript">

        $(document).ready(function () {
...

        });

    </script>
}

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

J'ai donc ajouté un script @section vide au _MainPage.cshtml, toujours le même problème? Même si j'ajoute du code à la section des scripts _MainPage, j'obtiens toujours la même erreur. Peu importe où je mets la @section dans _MainPage, j'obtiens toujours la même erreur.

Si je ne ferme pas la section à dessein (c'est-à-dire que je supprime le}), j'obtiens une erreur qui indique que la section est incorrecte, elle analyse donc la section dans _MainPage.

Comment puis-je faire fonctionner @RenderSections pour les scripts sur les pages du site dans ce cas?

37
MartinS

Vous devrez redéfinir la section dans _MainPage.cshtml.

_BootstrapLayout.cshtml

@RenderSection("scripts", false)

_MainPage.cshtml

@section scripts
{
   @RenderSection("scripts", false)
}

Index.cshtml

@section scripts
{
   <script>
     // etc.
   </script>
}
39
HackedByChinese