Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 13486|Risposta: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Copiato link]
Pubblicato su 19/07/2015 23:37:53 | | |
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.





Precedente:ASP.NET---- implementare un pulsante o un link per far apparire la finestra di accesso
Prossimo:Imposta la CheckBoxList in modo che non avvolga la linea
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com