Sintassi Html.RenderPartial () con Razor


95

Funziona, perché restituisce il risultato del rendering della vista parziale in una stringa:

@Html.Partial("Path/to/my/partial/view")

Ma preferisco usare RenderPartiale sembra che abbia bisogno di scrivere:

@{Html.RenderPartial("Path/to/my/partial/view");}

invece di:

@Html.RenderPartial("Path/to/my/partial/view");

Per farlo funzionare. Messaggio di errore:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

Se esiste un modo migliore invece di aprire il blocco di codice @{...}solo per una chiamata al metodo?


Qual è l'errore che ottieni quando provi a usare@Html.RenderPartial()
Neil Knight

Ho aggiunto un messaggio al mio post. Capisco perché mostra un errore @ Html.RenderPartial () viene analizzato all'incirca come <%?: @ Html.RenderPartial ()?> Che è sbagliato e non come <? Html.RenderPartial (); ?>, ma sto cercando una soluzione alternativa.
artvolk

Correlati: Html.Partial vs Html.RenderPartial e Html.Action vs Html.RenderAction . BTW perché preferisci usare RenderPartial?
Paolo Moretti

Risposte:


142
  • RenderPartial()è un metodo void che scrive nel flusso di risposta. Un metodo void, in C #, necessita di un ;e quindi deve essere racchiuso da { }.

  • Partial()è un metodo che restituisce un MvcHtmlString . In Razor, puoi chiamare una proprietà o un metodo che restituisce una stringa di questo tipo con solo un @prefisso per distinguerlo dal semplice HTML presente nella pagina.


1
Perché preferisci usare Html.RenderPartial invece di Html.Partial? Se, per qualche motivo, vuoi / hai bisogno di usare Html.RenderPartial, non c'è soluzione alternativa: questa è la sintassi.
Ofer Zelig

5
Lo uso perché dovrebbe essere più efficace (perché non restituisce una stringa enorme).
artvolk

45

Html.RenderPartial () è un metodo void: puoi verificare se un metodo è un metodo void posizionando il mouse sulla chiamata a RenderPartial nel codice e vedrai il testo (estensione) void HtmlHelper.RenderPartial ...

I metodi Void richiedono un punto e virgola alla fine del codice chiamante.

Nel motore di visualizzazione Webforms avresti racchiuso la tua chiamata Html.RenderPartial () all'interno delle punture di ape <%%>

così

<% Html.RenderPartial("Path/to/my/partial/view"); %>

quando si utilizza il motore di visualizzazione Razor, l'equivalente è

@{Html.RenderPartial("Path/to/my/partial/view");}

5
"punture di ape" - questa è la prima volta (per me?)
JoeBrockhaus

9
@Html.Partial("NameOfPartialView")

Mi piacerebbe usare Html.RenderPartial(), ecco perché ho posto questa domanda. I dettagli: "Dal punto di vista delle prestazioni, è stato affermato che il rendering direttamente nel flusso di output è migliore (motivo per cui sono passati con il vuoto RenderPartial per iniziare)." da qui stackoverflow.com/a/2729851/118810
artvolk

0

Se ti viene fornito questo formato, ci vuole come un collegamento a un'altra pagina o un'altra vista link.parziale utilizzata principalmente per il rendering dei file html da un luogo a un altro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.