2013-01-14 10 views
12

W mojej maszynie do golenia MVC4 używam @RenderSection i nie przejmuję się z @RenderBody.Jaki jest sens używania @RenderBody w widoku Razer MVC?

Następnie w widokach po prostu umieszczam wszystko w sekcjach.

To sprawia, że ​​zastanawiam się, o co chodzi z @RenderBody innym niż ułatwić ludziom, którzy nie chcą umieszczać rzeczy w sekcjach. Czy jest coś innego niż @RenderBody i coś wewnątrz @RenderSection?

Odpowiedz

17

@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

+0

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

+0

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ć. –

Powiązane problemy