2013-01-14 17 views
12

Nel mio layout di rasoio MVC4 sto usando @RenderSection e non mi preoccupo di con @RenderBody.Che senso ha usare @RenderBody in una vista Razor MVC?

Quindi nelle viste ho appena posto tutto in sezioni.

Questo mi fa chiedere quale sia il punto di @RenderBody diverso da rendere più facile per le persone che non vogliono mettere le cose in sezioni. C'è qualcosa di diverso da @RenderBody e qualcosa all'interno di un @RenderSection?

risposta

17

@RenderBody visualizza il contenuto della pagina che è non all'interno di alcuna sezione denominata. Se tutti i del tuo contenuto è all'interno di una delle sezioni definite, non c'è alcun punto. Tuttavia ...

Nella sintassi del Rasoio, @RenderSection sostituisce le pagine mastro. Ti consente di ritagliare sezioni della pagina per aree particolari e quindi consentire che il corpo principale del contenuto emerga naturalmente ovunque venga inserita la dichiarazione @RenderBody.

Diciamo che stai scrivendo una fattura. L'area RenderBody sarebbe quella parte della pagina che contiene gli elementi pubblicitari della fattura. Questo è vero per la maggior parte delle segnalazioni; c'è sempre una sezione di intestazione, una sezione di corpo e una sezione di piè di pagina.

Presumibilmente, il rendering di una sezione nell'area appropriata di una pagina Web consente di ottenere un comportamento semantico appropriato, ad esempio lo stile del piè di pagina in modo che venga sempre visualizzato nella parte inferiore di una pagina.

<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

Grazie - ho pensato così. Mi chiedevo solo se ci fosse qualche caching speciale o qualcosa del RenderBody. Personalmente se ho più di una sezione penso che sia un po 'più pulito tenere tutto in sezioni piuttosto che usare il RenderBody per uno e le sezioni per l'altro. – Melina

+0

Vedere la mia modifica .... RenderBody consente di eseguire il rendering del contenuto ordinario in una pagina con sezioni, senza che sia necessario mantenere un'altra sezione definita solo per il contenuto principale. Questo è il modo in cui tutti i report funzionano ... Il corpo del contenuto principale non dovrebbe aver bisogno di informazioni sulle sezioni sul resto della pagina. In questo modo, puoi rendere il corpo come una normale pagina web senza le altre sezioni (e senza definire una "sezione del corpo"), o renderlo completamente in una pagina con sezioni diverse, e funzionerà comunque. –

Problemi correlati