2010-11-12 7 views
54

Posso utilizzare ContentPlaceHolder con i motori di visualizzazione Webforms per inserire elementi in posizioni diverse nella pagina principale.ContentPlaceHolder in Razor?

Come faccio a farlo con 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

Risposta da @jgauffin è abbastanza buono, ma seguire è anche un post ben scritto da Scott Gu che spiega in dettaglio come funzionano le sezioni http://weblogs.asp.net/scottgu/archive /2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx – N30

risposta

89

Ancora una volta sono riuscito a chiedere prima di trovare le parole chiave di ricerca corrette in Google.

Nel layout

@RenderSection("footer", required: false) 

Visualizza esempio

<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 in MVC 3 RC il parametro di 'RenderSection' è cambiato da' optional' a 'required' (e significato invertito, ovviamente). Quindi, sarebbe simile a questo: @RenderSection ("footer", obbligatorio: false) (Ho modificato la risposta per riflettere questo.) – Eilon

+0

esattamente quello che stavo cercando. grazie per questa domanda e risposta :) – Jason

+0

perché restituiamo il rendering come falso? – Duk

10

non poteva lasciare un commento dispiace ma è possibile rimuovere la "necessaria:"

@RenderSection("footer", false) 
+10

Mi piace che "richiesto" sia lì; rende il codice immediatamente comprensibile – joshcomley

+11

in tal caso perché non etichettare tutti i parametri ......... ovunque. – Kyle

+0

in un primo momento quando ho visto questo richiesto ero confuso, perché non è normale passare il nome del parametro in modo che sia "immediatamente comprensibile". allora perché la gente non ama le notazioni ungheresi? rende comprensibile tutto il codice :) – Karim