2013-01-14 53 views
12

在我的MVC4剃鬚刀佈局我使用@RenderSection,我不打擾 與@RenderBody在MVC Razor視圖中使用@RenderBody有什麼意義?

然後在視圖中,我只是將所有內容放在部分中。

這讓我想知道除了 以外,@RenderBody這一點對於那些不希望把事情放在分段中的人來說更容易。有沒有什麼不同於@RenderBody@RenderSection裏面的東西?

回答

17

@RenderBody呈現您的頁面內容不在任何命名的部分。如果您的內容的全部爲在您定義的部分之一內,則沒有意義。但是...

在剃刀語法中,@RenderSection代替母版頁。它允許您爲特定區域分割頁面的各個部分,然後允許內容的主體在聲明放置的任何位置自然出現。

假設您正在編寫發票。 RenderBody區域將包含您的發票行項目頁面的那一部分。大多數報告都是如此;總是有一個標題部分,一個主體部分和一個頁腳部分。

假設在網頁的適當區域中渲染節,可以獲得適當的語義行爲,例如以總是出現在頁面底部的方式設置頁腳樣式。

<footer> 
    @RenderSection("Footer", @<span>This is my footer!</span>) 
</footer> 

http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvc3razor_topic2.aspx

http://haacked.com/archive/2011/03/05/defining-default-content-for-a-razor-layout-section.aspx

+0

謝謝 - 我是這麼認爲的。只是想知道是否有任何特殊的緩存或任何與RenderBody。就個人而言,如果我有多個部分,我認爲將所有部分放在一個部分中比將RenderBody用於一部分而將部分用於其他部分更清潔一點。 – Melina

+0

請參閱我的編輯.... RenderBody允許您將普通內容呈現爲包含部分的頁面,而無需爲主要內容維護另一個已定義的部分。這就是所有報告的工作原理......主要內容主體不需要了解頁面其餘部分的部分。這樣,您可以將主體呈現爲普通網頁而無需其他部分(並且不定義「主體部分」),或者將其呈現爲具有不同部分的頁面,並且仍然可以工作。 –