Risposte:
Html.Partial("MyView")
Esegue il rendering della vista "MyView" in un file MvcHtmlString
. Segue le regole standard per la ricerca delle viste (cioè controlla la directory corrente, quindi controlla la Shared
directory).
Html.RenderPartial("MyView")
Fa lo stesso di Html.Partial()
, tranne per il fatto che scrive il suo output direttamente nel flusso di risposta. Ciò è più efficiente, perché il contenuto della vista non è memorizzato nel buffer. Tuttavia, poiché il metodo non restituisce alcun output, @Html.RenderPartial("MyView")
non funzionerà. Si deve avvolgere la chiamata in un blocco di codice, invece: @{Html.RenderPartial("MyView");}
.
RenderPage("MyView.cshtml")
Rende 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 che ti piace alla vista includendolo come secondo parametro
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
vs.@{Html.RenderPartial("MyView");}
RenderPage
? Desidero annidare una pagina diversa specificando un parametro di query specifico, che a sua volta filtrerebbe i dati in quella pagina e, inoltre, rimuoverà il proprio layout.
preferisco
@RenderPage("_LayoutHeader.cshtml")
Al di sopra di
@{ Html.RenderPartial("_LayoutHeader"); }
Solo perché la sintassi è più semplice ed è più leggibile. Oltre a questo non sembra esserci alcuna differenza in termini di funzionalità.
EDIT: Un vantaggio di RenderPartial è che non è necessario specificare l'intero percorso o l'estensione del file, cercherà automaticamente i luoghi comuni.
RenderPage
causa della sintassi.
Il metodo RenderPartial non restituisce il markup HTML come la maggior parte degli altri metodi di supporto. Invece, scrive il contenuto direttamente nel flusso di risposta, motivo per cui dobbiamo chiamarlo come una riga completa di C #, utilizzando un punto e virgola.
Questo è leggermente più efficiente del buffering dell'HTML renderizzato dalla vista parziale, poiché verrà comunque scritto nel flusso di risposta. Se si preferisce una sintassi più coerente, è possibile utilizzare il metodo Html.Partial , che fa esattamente la stessa cosa del metodo RenderPartial , ma restituisce un frammento HTML e può essere utilizzato come @ Html.Partial ("Product", p).
@RenderPages()
Quanto sopra non funziona in ASP.NET MVC. Funziona solo nelle pagine web.
@Html.Partial("_Footer")
Sarà necessario utilizzare quanto sopra in ASP.NET MVC.