Html.RenderPartial mi da uno strano errore di sovraccarico?


103

Ho creato una pagina parziale di prova denominata _Test.cshtml e l' ho inserita nella stessa directory della mia vista che la chiamerà, eccola:

<div>hi</div>

E nella vista cshtml chiamante, ho semplicemente messo:

@Html.RenderPartial("_Test")

Il che mi dà l'errore:

CS1502: la migliore corrispondenza del metodo sovraccarico per "System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)" ha alcuni argomenti non validi

Ho anche provato il percorso completo con lo stesso risultato.

Sono molto confuso sul motivo per cui si sta comportando in questo modo, presumo mi manchi qualcosa di semplice?

Risposte:


190

Ricevi questo errore perché gli Html.RenderXXXhelper restituiscono void: non hanno nulla da restituire perché stanno scrivendo cose direttamente * in risposta. Dovresti usarli in questo modo:

@{ Html.RenderPartial("_Test"); }

C'è anche Html.Partial helper, che funzionerà con la tua sintassi, ma non consiglierei di usarlo a meno che non sia necessario, a causa delle prestazioni (prima compone la vista parziale data in stringa, quindi la vista genitore lo mette in risposta * ).

* questo non è del tutto vero, vengono effettivamente renderizzati in ViewContext.Writer e una volta che l'intera pagina è stata renderizzata e composta, il tutto va in risposta

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.