2010-12-21 18 views

Respuesta

115
Html.Partial("MyView") 

Representa la vista "MyView" a MvcHtmlString. Sigue las reglas estándar para la búsqueda de vistas (es decir, verifica el directorio actual, luego verifica el directorio Shared).

Html.RenderPartial("MyView") 

hace lo mismo que Html.Partial(), excepto que escribe su salida directamente a la secuencia de respuesta. Esto es más eficiente, porque el contenido de la vista no está almacenado en la memoria. Sin embargo, como el método no devuelve ninguna salida, @Html.RenderPartial("MyView") no funcionará. En su lugar, debe envolver la llamada en un bloque de código: @{Html.RenderPartial("MyView");}.

RenderPage("MyView.cshtml") 

hace que la vista especificada (identificado por ruta de acceso y nombre del archivo en lugar de por nombre de la vista) directamente a la secuencia de respuesta, como Html.RenderPartial(). Puede proporcionar cualquier modelo que te gusta a la vista incluyéndolo como un segundo parámetro

RenderPage("MyView.cshtml", MyModel) 
+8

¿Hay alguna métrica en la ganancia de eficiencia de @ {Html.RenderPartial ("MyView");} sobre @ Html.RenderPartial ("MyView")? – Faust

+0

@Faust ¿Se refería a Partial vd RenderPartial? –

+1

@cacho: sí, mi comentario debería leer '@ Html.Partial (" MyView ")' contra '@ {Html.RenderPartial (" MyView ");}' – Faust

15

prefiero

@RenderPage("_LayoutHeader.cshtml") 

Durante

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

Sólo porque la sintaxis es más fácil y es más fácil de leer. Aparte de eso, no parece haber diferencias en cuanto a la funcionalidad.

EDITAR: Una de las ventajas de RenderPartial es que no tiene que especificar la ruta completa o la extensión de archivo que buscará en los lugares comunes automáticamente.

+1

Creo que esto debería ser un comentario no respuesta. También estoy de acuerdo con 'RenderPage' debido a la sintaxis. –

6

El renderPartial método no devuelve el formato HTML como la mayoría de otros métodos de ayuda. En su lugar, escribe el contenido directamente en la secuencia de respuesta, por lo que debemos llamarlo como una línea completa de C#, utilizando un punto y coma.

Esto es ligeramente más eficiente que el almacenamiento en búfer del HTML representado desde la vista parcial, ya que se escribirá de todos modos en la secuencia de respuesta . Si prefiere una sintaxis más consistente, se puede utilizar el método deHtml.Partial, que hace exactamente el mismo que el método derenderPartial, pero devuelve un fragmento de HTML y se puede utilizar como @ Html.Partial ("Producto ", pag).

2

También podemos pasar el modelo usando vistas parciales. @ Html.Partial ("MyView", "MyModel");

0
@RenderPages() 

Lo anterior no funciona en ASP.NET MVC. Solo funciona en páginas web.

@Html.Partial("_Footer") 

Deberá utilizar lo anterior en ASP.NET MVC.