web-dev-qa-db-ja.com

MVC @RenderSection「セクションは定義されていますが、レンダリングされていません」スクリプト。複数レベルのページ

MVC v4を使用しています。
Twitter bootstrapなどをすべて定義する '_BootstrapLayout'ページ、サイトレイアウト、navbarなどを定義するメインページ、およびメインページから継承するサイトページがあります。

_BootstrapLayout.cshtml

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

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

マスターページ->メインページ->サイトページ

_BootstrapLayoutページには、スクリプトのrendersectionが含まれています

@RenderSection("scripts", required: false)

Index.cshtmlページにスクリプトセクションを追加したいのですが、そうすると例外が発生します

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

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

        });

    </script>
}

次のセクションは定義されていますが、レイアウトページ「〜/ Views/Shared/_MainPage.cshtml」用にレンダリングされていません:「scripts」。

そこで、_MainPage.cshtmlに空の@sectionスクリプトを追加しましたが、それでも同じ問題がありますか? _MainPageスクリプトセクションにコードを追加しても、同じエラーが発生します。 @sectionを_MainPageのどこに配置しても問題ありませんが、それでも同じエラーが発生します。

セクションを意図的に閉じない(つまり、}を削除する)と、セクションが正しくないことを示すエラーが表示されるため、_MainPageのセクションが解析されます。

この場合、サイトページ上のスクリプトの@RenderSectionsを取得するにはどうすればよいですか?

37
MartinS

_MainPage.cshtmlのセクションを再定義する必要があります。

_BootstrapLayout.cshtml

@RenderSection("scripts", false)

_MainPage.cshtml

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

Index.cshtml

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