@RenderBody
powoduje, że treść strony, która jest , nie znajduje się w żadnym z wymienionych sekcji. Jeśli wszystkich treści znajduje się w jednej z określonych sekcji, nie ma sensu. Jednak ...
W składni Razor, @RenderSection
zastępuje strony wzorcowe. Pozwala to na wydzielenie sekcji strony dla poszczególnych obszarów, a następnie pozwolenie na pojawienie się głównej treści treści w dowolnym miejscu, gdzie znajduje się deklaracja @RenderBody
.
Załóżmy, że piszesz fakturę. Obszar RenderBody
byłby tą częścią strony, która zawiera elementy zamówienia faktury. Dotyczy to większości raportów; zawsze jest sekcja nagłówka, sekcja ciała i sekcja stopki.
Prawdopodobnie, renderowanie sekcji w odpowiednim obszarze strony internetowej pozwala uzyskać właściwe zachowanie semantyczne, takie jak stylizacja stopki w taki sposób, że zawsze pojawia się na dole strony.
<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
Dzięki - tak myślałem. Zastanawiam się, czy nie było jakieś specjalne buforowanie lub coś z RenderBody. Osobiście, jeśli mam więcej niż jedną sekcję, uważam, że nieco czystsze jest przechowywanie wszystkiego w sekcjach niż używanie RenderBody dla jednego i sekcje dla drugiego. – Melina
Zobacz moją edycję .... RenderBody pozwala na renderowanie zwykłej zawartości na stronę posiadającą sekcje, bez konieczności utrzymywania innej zdefiniowanej sekcji tylko dla głównej zawartości. Tak działają wszystkie raporty ... Główny korpus treści nie powinien potrzebować żadnej wiedzy na temat sekcji w dalszej części strony. W ten sposób możesz renderować ciało jako zwykłą stronę internetową bez innych sekcji (i bez definiowania "sekcji ciała"), lub renderować je na stronę z różnymi sekcjami łącznie, i to nadal będzie działać. –