2011-11-02 52 views
0

我正在使用ASP.NET MVC 3Razor view engine如何从视图中将JavaScript注入到根布局中

我有一个名为_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> 

于是最后我的索引视图使用此_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,我想它在关闭正文标记之前(在_Root中)。我该怎么做呢?

回答

1

_Lr.cshtml你需要重新定义部分:

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

这显然假定_Lr.cshtmlRoot.cshtml(嵌套布局)派生的。

+0

是的,它的工作原理。但是我不明白为什么_Lr像上面提到的那样有一个RenderSection。这是否意味着_Root必须呈现它,看看还有RenderSection? –

相关问题