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

时间:2013-01-23 12:11:59

标签: c# asp.net-mvc razor asp.net-mvc-4

我正在使用MVC v4 我有一个'_BootstrapLayout'页面,它定义了所有的twitter bootstrap等东西,一个定义网站布局的主页面,导航栏等,以及从主页面继承的网站页面。

  

_BootstrapLayout.cshtml

     

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

     

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

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

_BootstrapLayout页面包含脚本的渲染

@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脚本部分,我仍然会得到相同的错误。无论我在@MainPage中放置@section,仍然会得到相同的错误。

如果我故意不关闭该部分(即删除}),那么我得到一个错误,表明该部分不正确,所以它正在解析_MainPage中的部分。

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

1 个答案:

答案 0 :(得分:39)

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

_BootstrapLayout.cshtml

@RenderSection("scripts", false)

_MainPage.cshtml

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

Index.cshtml

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