2014-04-03 53 views
5

這似乎很奇怪,我,如果我做剃刀:渲染代碼塊中不起作用

@RenderSection("scripts", required: false) 

那麼它工作完全正常,但如果我不

@{ 
    RenderSection("scripts", required: false); 
} 

那麼腳本部分將不會得到渲染,我會得到「下面的部分已定義,但尚未呈現佈局頁面」〜/ Views/Shared/_Layout.cshtml「:」腳本「。」錯誤

任何想法爲什麼RenderSection/Script.Render不能在代碼塊內?

編輯: 我試圖把一個破發點的代碼塊內,斷點被擊中的頁面加載時,和RenderSection方法執行沒有任何異常

回答

4

RenderSection不寫任何東西。相反,這種方法返回一個HelperResult,它實現IHtmlString,並且可以通過使用其WriteTo方法呈現給頁面。

@{ 
    HelperResult renderSection = RenderSection("scripts", required: false); 
    renderSection.WriteTo(Output); 
} 

當使用@RenderSection它自動渲染頁面

+0

所以這意味着@和@ {}語法其實在某些方面有什麼不同? – Steve

+1

@Steve他們是非常不同的。 @ {}是代碼塊,@不是 –

+0

'@ RenderSection'和'@(RenderSection)'是等價物,但是「@ {RenderSection}」完全不同。 – meziantou