2011-03-25 17 views
99

Hice una página parcial de test denominada _Test.cshtml y la puso en el mismo directorio que mi opinión de que va a llamar a él, aquí está:Html.RenderPartial que me da un extraño error de sobrecarga?

<div>hi</div> 

Y en la vista cshtml llamada, simplemente poner:

@Html.RenderPartial("_Test") 

lo que me da el error:

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

también he probado la ruta completa con e el mismo resultado.

Estoy muy confundido de por qué esto está actuando de esta manera, supongo que me falta algo simple?

Respuesta

185

Recibirá este error porque Html.RenderXXX los ayudantes vuelven vacíos: no tienen nada que devolver porque están escribiendo cosas directamente * a la respuesta. Debe utilizar como esto:

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

También hay Html.Partial ayudante, que trabajará con su sintaxis, pero no me gustaría recomendar el uso a menos que tenga que hacerlo, porque de rendimiento (primero compone dado vista parcial en cadena, y luego vista principal lo pone en respuesta *).

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

Cuestiones relacionadas