Sintaxis de Html.RenderPartial () con Razor

95

Esto funciona porque devuelve el resultado de la representación de vista parcial en una cadena:

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

Pero prefiero usar RenderPartialy parece que necesito escribir:

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

en vez de:

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

Para que funcione. Mensaje de error:

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

¿Hay alguna forma mejor en lugar de abrir el bloque de código @{...}solo para una llamada de método?

artvolk
fuente
¿Cuál es el error que obtiene cuando intenta usar@Html.RenderPartial()
Neil Knight
Agregué un mensaje a mi publicación. Entiendo por qué muestra un error @ Html.RenderPartial () se analiza aproximadamente como <%?: @ Html.RenderPartial ()?> Que es incorrecto y no como <? Html.RenderPartial (); ?>, pero estoy buscando una solución.
artvolk
Relacionado: Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction . Por cierto, ¿por qué prefieres usarlo RenderPartial?
Paolo Moretti

Respuestas:

142
  • RenderPartial()es un método vacío que escribe en el flujo de respuesta. Un método void, en C #, necesita un ;y, por lo tanto, debe incluirse entre { }.

  • Partial()es un método que devuelve un MvcHtmlString . En Razor, puede llamar a una propiedad o un método que devuelve dicha cadena con solo un @prefijo para distinguirla del HTML simple que tiene en la página.

Ofer Zelig
fuente
1
¿Por qué prefiere usar Html.RenderPartial en lugar de Html.Partial? Si, por alguna razón, quiere / necesita ir con Html.RenderPartial, no hay solución, esa es la sintaxis.
Ofer Zelig
5
Lo uso porque debería ser más efectivo (porque no devuelve una cadena enorme).
artvolk
45

Html.RenderPartial () es un método vacío; puede verificar si un método es un método vacío colocando el mouse sobre la llamada a RenderPartial en su código y verá el texto (extensión) void HtmlHelper.RenderPartial ...

Los métodos vacíos requieren un punto y coma al final del código de llamada.

En el motor de visualización de formularios web, habría encerrado su llamada Html.RenderPartial () dentro de las picaduras de abeja <%%>

al igual que

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

cuando utiliza el motor de vista de Razor, el equivalente es

@{Html.RenderPartial("Path/to/my/partial/view");}
Nicolás Murray
fuente
5
"picaduras de abeja" - esa es la primera vez (¿para mí?)
JoeBrockhaus
9
@Html.Partial("NameOfPartialView")
RouR
fuente
Me gustaría usar Html.RenderPartial(), por eso hice esta pregunta. Los detalles: "En cuanto al rendimiento, se ha afirmado que el renderizado directamente en el flujo de salida es mejor (por eso, para empezar, eligieron el RenderPartial vacío)". desde aquí stackoverflow.com/a/2729851/118810
artvolk
0

Si se le da este formato, es como un enlace a otra página u otro enlace. Vista parcial que se utiliza principalmente para reproducir los archivos html de un lugar a otro.

Sankar
fuente