2011-11-02 53 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? –

相關問題