2010-11-12 11 views
54

Mogę użyć ContentPlaceHolder's z silnikami widoku Webforms, aby umieścić rzeczy w różnych miejscach na stronie wzorcowej.ContentPlaceHolder in Razor?

Jak to zrobić z maszynką Razor?

<div id="content"> 
     <asp:ContentPlaceHolder ID="MainContent" runat="server"> 
     </asp:ContentPlaceHolder> 
    </div> 
    <div id="footer"> 
     <asp:ContentPlaceHolder ID="Footer" runat="server"> 
     </asp:ContentPlaceHolder> 
    </div> 
+0

Odpowiedź jest przez @jgauffin Wystarczająco dobre, ale poniżej znajduje się również dobrze napisany post Scott Gu, który wyjaśnia szczegółowo, jak działają sekcje http://weblogs.asp.net/scottgu/archive /2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx – N30

Odpowiedz

89

Jeszcze raz udało mi się zapytać, zanim znajdę właściwe słowa kluczowe w wyszukiwarce Google.

w układzie

@RenderSection("footer", required: false) 

Zobacz przykład

<h2>About</h2> 

<p> 
    Some stuff about this page. 
</p> 

<p> 
    The current date and time: @DateTime.Now 
</p> 

@section footer { 

    Copyright (c) 2010, Robert Sundström. 

} 
+6

BTW w MVC 3 RC parametr "RenderSection" zmieniony z "opcjonalny" na "wymagany" (i jego oczywiście odwrotnie). Tak więc wyglądałoby to tak: @RenderSection ("stopka", wymagane: false) (Edytowałem odpowiedź, aby to odzwierciedlić.) – Eilon

+0

dokładnie to, czego szukałem. dziękuję za to pytanie i odpowiedź :) – Jason

+0

dlaczego dajemy interpretację jako fałszywą? – Duk

10

komentarz nie może opuścić przykro, ale można usunąć "wymagane"

@RenderSection("footer", false) 
+10

Podoba mi się "wymagane" istnienie; sprawia, że ​​kod staje się natychmiast zrozumiały. – joshcomley

+11

w takim przypadku, dlaczego nie należy etykietować wszystkich parametrów ......... wszędzie. – Kyle

+0

na początku, gdy zobaczyłem, że to wymagane, byłem zdezorientowany, ponieważ dobrze nie jest normalne przekazywanie nazwy parametru, więc jest "natychmiast zrozumiałe". dlaczego ludzie nie lubią węgierskich notatek? sprawia, że ​​cały twój kod jest zrozumiały :) – Karim