Html.RenderPartial me da un extraño error de sobrecarga?

103

Hice una página de prueba parcial llamada _Test.cshtml y la puse en el mismo directorio que mi vista que la llamará, aquí está:

<div>hi</div>

Y en la vista cshtml de llamada, simplemente pongo:

@Html.RenderPartial("_Test")

Lo que me da el error:

CS1502: La mejor coincidencia de método sobrecargado para 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' tiene algunos argumentos no válidos

También probé la ruta completa con el mismo resultado.

Estoy muy confundido en cuanto a por qué esto está actuando de esta manera, supongo que me estoy perdiendo algo simple.

naspinski
fuente

Respuestas:

190

Recibes este error porque los Html.RenderXXXayudantes devuelven vacío; no tienen nada que devolver porque están escribiendo cosas directamente * en la respuesta. Deberías usarlos así:

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

También está Html.Partial helper, que funcionará con su sintaxis, pero no recomendaría usarlo a menos que sea necesario, debido al rendimiento (primero compone una vista parcial dada en una cadena, y luego la vista principal la pone en respuesta * ).

* esto no es del todo cierto, en realidad se están renderizando en ViewContext.Writer y una vez que se renderiza y compone la página completa, todo va a la respuesta

Lukáš Novotný
fuente