MVC @RenderSection“部分已被定义,但尚未呈现”脚本。 当多层次的页面

我正在使用MVC v4。
我有一个'_BootstrapLayout'页面,它定义了所有的twitter引导等东西,定义站点布局的主页面,navbar等,以及从主页面inheritance的网站页面。

_BootstrapLayout.cshtml

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

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

所以母版页 – >主页 – >网站页面

_BootstrapLayout页面包含脚本的渲染

@RenderSection("scripts", required: false) 

我想添加一个脚本部分到Index.cshtml页面,但是当我做我得到exception

 @section scripts { <script type="text/javascript"> $(document).ready(function () { ... }); </script> } 

以下部分已被定义,但尚未渲染布局页面“〜/ Views / Shared / _MainPage.cshtml”:“scripts”。

所以我添加了一个空的@section脚本到_MainPage.cshtml,仍然是同样的问题? 即使我将代码添加到_MainPage脚本部分,我仍然得到相同的错误。 在_MainPage中放置@section的位置并不重要,仍然会出现相同的错误。

如果我故意不closures该部分(即,删除}),那么我得到一个错误,指出该部分是不正确的,所以它parsing_MainPage中的部分。

在这种情况下,如何获取网站页面上脚本的@RenderSections?

您需要重新定义_MainPage.cshtml的部分。

_BootstrapLayout.cshtml

 @RenderSection("scripts", false) 

_MainPage.cshtml

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

Index.cshtml

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