如何从视图中将JavaScript注入到根布局中

时间:2011-11-02 08:24:01

标签: asp.net asp.net-mvc-3 razor

我将ASP.NET MVC 3Razor view engine一起使用。

我有一个名为_Root.cshtml的布局视图。 HTML标记如下所示:

<body>

     <div id="hd"></div>

     @RenderBody()

     <div id="ft"></div>

     @RenderSection("JavaScriptBodySection", false)

</body>

@RenderBody()存在,因为布局因您所处的视图而异。 JavaScriptBodySection是我希望我的所有JavaScript都被视图使用的地方(由视图注入)。

我有另一个使用此_Root布局的布局,名为_Lr.cshtml。 HTML标记如下所示:

<div id="bd">

  <!-- Layout code here -->

  @RenderBody()

</div>

最后我的Index视图使用了这个_Lr布局,标记看起来像这样:

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

<div class="main-content">
     <!-- Some stuff here -->
</div>

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

抱怨_Lr中没有JavaScriptBodySection。我不想在这里,因为我的JavaScript在我的div下面有id bd,我想在关闭body标签之前(在_Root中)。我该怎么做?

1 个答案:

答案 0 :(得分:1)

_Lr.cshtml中,您需要重新定义该部分:

<div id="bd">
    <!-- Layout code here -->
    @RenderBody()
</div>
@section JavaScriptBodySection {
    @RenderSection("JavaScriptBodySection", false)
}

这显然假设_Lr.cshtml派生自Root.cshtml(嵌套布局)。