1. RenderBody Nel motore Razor, non esiste una "pagina maestra", ma una pagina chiamata "layout" (_Layout.cshtml) viene inserita nella cartella della vista condivisa. In questa pagina vedrai una dichiarazione nel tag: @RenderBody() In effetti, funziona in modo simile al controllo server nella pagina master: quando viene creata una vista basata su questa pagina di layout, i contenuti della vista vengono uniti alla pagina di layout e il contenuto della nuova vista viene visualizzato tra le etichette tramite il metodo @RenderBody() della pagina di layout. Questo metodo non richiede parametri e può apparire solo una volta. 2. RenderPage Come puoi intuire dal nome, questo metodo consiste nel presentare una pagina. Ad esempio, l'intestazione fissa in una pagina web può essere posta separatamente in un file di visualizzazione condivisa, e poi chiamata in questo metodo nella pagina di layout, come segue: @RenderPage("~/Visualizzazioni/Condivise/_Header.cshtml") Con parametri @RenderPage("~/Visualizzazioni/Condivise/_Header.cshtml",new{parm="my",parm2="tu") Chiama la pagina per ottenere i parametri: Fai passare i parametri tramite RenderPage(). @PageData["param"] 3. RenderSection La pagina di layout ha anche il concetto di sezione, cioè, se una sezione è definita in un modello di visualizzazione, può essere presentata separatamente nel seguente modo: @RenderPage("~/Visualizzazioni/Condivise/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection ("testa") Naturalmente, definisci anche la sezione nella vista, altrimenti si verificherà un'eccezione: @section testa{
//do
} Per evitare eccezioni dovute a sezioni mancanti, puoi dare a RenderSection() un secondo argomento: @RenderSection ("Submenu", falso) o @if (IsSectionDefined("Submenu"))
{ @RenderSection ("Submenu", falso)
} altrimenti
{ <p>La sezione Submenu non è definita!</p>
}
4.@Html.Partial Partial crea ogni volta la propria istanza di TextWriter e memorizza il contenuto in memoria. Infine, invia tutto l'output dello writer a un oggetto MvcString Più spesso che no, useremo @{ html.RenderPartial("details"); invece di @Html. Parziale La differenza tra RenderPage() e RenderPartial(). Le chiamate RenderPage() possono usarla solo per passare oltre i dati. RenderPartial() può utilizzare viewdata, modelli e altri dati. La differenza tra Html.RenderPartial e Html.RenderAction Html.RenderPartial è adatto per UserControl ripetuti e deve essere usato solo per renderizzare contenuti tramite modelli o per UserControls per pubblicità. Html.RenderAction chiamerà prima il metodo Action del Controller; se questo UserControl deve ottenere dati dal database per renderizzarlo (leggere il database tramite l'Action), questo metodo è più adatto per questo periodo. 5.Html.Partial("MyView") Restituisci un flusso di tentativo come MvcHtmlString, seguendo le regole standard di routing. Visualizza la vista "MyView" in una MvcHtmlString. Segue le regole standard per la ricerca delle viste (cioè controllare la directory corrente, poi controllare la directory Condivisa). Html.RenderPartial("MyView")
Simile a Html.Partial(), la differenza è che viene digitato direttamente nella pagina senza cache. Fa lo stesso di Html.Partial(), tranne che scrive direttamente il suo output nel flusso di risposta. Questo è più efficiente, perché il contenuto della visualizzazione non è bufferizzato in memoria. Tuttavia, poiché il metodo non restituisce alcun output, @Html.RenderPartial ("MyView") non funzionerà. Devi invece avvolgere la chiamata in un blocco di codice: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Restituisce una vista speciale con percorsi, nomi file, ecc., e produce direttamente come Heml.RenderPartial() senza cache. Le variabili del modello possono essere passate. Visualizza la vista specificata (identificata dal percorso e dal nome del file piuttosto che dal nome della vista) direttamente nel flusso di risposta, come Html.RenderPartial(). Puoi fornire qualsiasi modello tu voglia alla vista includendolo come secondo parametro RenderPage("MyView.cshtml",MyModel)
Preferisco
@RenderPage("_LayoutHeader.cshtml")Cambio @{Html.RenderPartial("_LayoutHeader"); }Solo perché la sintassi è più facile e più leggibile. A parte questo, non sembrano esserci differenze funzionalmente.
|