2013-01-14 41 views
12

私のMVC4のカミソリのレイアウトでは、私は@RenderSectionを使用していて、 には@RenderBodyとは気にしません。MVC Razorビューで@RenderBodyを使用するポイントは何ですか?

次に、ビューではすべてをセクションに配置します。

@RenderBody以外の点は、 以外では、セクションに物事を入れたくない人にとっては、もっと簡単になります。 @RenderBodyと何かがありますか?@RenderSectionの中に何かがありますか?

答えて

17

@RenderBodyは、というページのコンテンツを名前付きセクション内に表示しません。あなたのコンテンツのがあなたの定義したセクションの1つに含まれている場合は、何の意味もありません。しかし...

Razor構文では、@RenderSectionがマスターページを置き換えます。特定の領域のページのセクションを切り取って、@RenderBody宣言が置かれている場所にコンテンツの本体が自然に出現するようにすることができます。

送り状を書いているとします。 RenderBody領域は、請求書の広告申込情報を含むページのその部分になります。これはほとんどのレポートに当てはまります。ヘッダーセクション、ボディセクション、フッターセクションが常にあります。

Webページの適切な領域にセクションをレンダリングすると、ページの下部に常に表示されるようにフッターをスタイリングするなど、適切なセマンティック動作を得ることができます。

<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は、メインコンテンツのためだけに別の定義されたセクションを維持する必要なく、セクションを持つページに通常のコンテンツをレンダリングすることができます。これは、すべてのレポートがどのように機能するかです。メインのコンテンツ本体は、ページの残りのセクションの認識を必要とすべきではありません。そうすれば、本体を他のセクションを持たない普通のWebページ( "本体セクション"を定義しない)としてレンダリングしたり、別のセクションのページにレンダリングしたりすることができます。 –

関連する問題