En ASP.NET MVC, ¿cuál es la diferencia entre:
Html.Partial
yHtml.RenderPartial
Html.Action
yHtml.RenderAction
.net
asp.net-mvc
partial-views
renderpartial
renderaction
Ghooti Farangi
fuente
fuente
Respuestas:
Html.Partial
devuelve una cadena.Html.RenderPartial
llamaWrite
internamente y regresavoid
.El uso básico es:
En el fragmento anterior, ambas llamadas arrojarán el mismo resultado.
Si bien se puede almacenar la salida de
Html.Partial
en una variable o devolverla desde un método, no se puede hacer esto conHtml.RenderPartial
.El resultado se escribirá en la
Response
secuencia durante la ejecución / evaluación.Esto también se aplica a
Html.Action
yHtml.RenderAction
.fuente
Html.Partial()
fue creado para tener una sintaxis más fluida con Razor. Como dijo @Vlad,Html.RenderPartial()
es más eficiente.Piense en @ Html.Partial como código HTML copiado en la página principal. Piense en @ Html.RenderPartial como un control de usuario .ascx incorporado en la página principal. Un control de usuario .ascx tiene muchos más gastos generales.
'@ Html.Partial' devuelve una cadena codificada en html que se construye en línea con el padre. Accede al modelo de los padres.
'@ Html.RenderPartial' devuelve el equivalente de un control de usuario .ascx. Obtiene su propia copia de ViewDataDictionary de la página y los cambios realizados en ViewData de RenderPartial no afectan a ViewData de los padres.
Usando la reflexión encontramos:
fuente
Partial
renderizado en un búfer no signifique que se renderice de forma asincrónica, sino todo lo contrario, no puedo ver cómo puede afirmar queRenderPartial
es "más intensivo en recursos".Esto es lo que he encontrado:
Use RenderAction cuando no tenga un modelo para enviar a la vista y tenga una gran cantidad de HTML para recuperar que no necesita almacenarse en una variable.
Use Acción cuando no tenga un modelo para enviar a la vista y tenga un poco de texto para recuperar que debe almacenarse en una variable.
Use RenderPartial cuando tenga un modelo para enviar a la vista y habrá una gran cantidad de HTML que no necesita almacenarse en una variable.
Use Parcial cuando tenga un modelo para enviar a la vista y habrá un poco de texto que debe almacenarse en una variable.
RenderAction y RenderPartial son más rápidos.
fuente
La diferencia es que primero se devuelve una salida
MvcHtmlString
pero segunda (Render..
) directamente a la respuesta.fuente
Según yo,
@Html.RenderPartial()
tiene una ejecución más rápida que@Html.Partial()
debido a Html.RenderPartial da una respuesta rápida a Output.Porque cuando uso
@Html.Partial()
, mi sitio web tarda más en cargarse en comparación con@Html.RenderPartial()
fuente
@Html.Partial
y@Html.RenderPartial
se utilizan cuando su modelo de vista parcial es correspondencia del modelo principal, no necesitamos crear ningún método de acción para llamarlo.@Html.Action
y@Html.RenderAction
se usan cuando su modelo de vista parcial es independiente del modelo principal, básicamente se usa cuando desea mostrar cualquier tipo de contenido de widget en la página. Debe crear un método de acción que devuelva un resultado de vista parcial mientras llama al método desde la vista.fuente
Más sobre la pregunta:
"NerdDinner" de Professional ASP.NET MVC 1.0
fuente
El tipo de retorno de
Html.RenderAction
esvoid
que significa que procesa directamente las respuestas en la Vista donde el tipo de retorno deHtml.Action
esMvcHtmlString
Puede capturar su vista de procesamiento en el controlador y modificarla utilizando el siguiente métodoEsto devolverá la cadena Html de la Vista.
Esto también es aplicable a
Html.Partial
yHtml.RenderPartial
fuente
Parcial o RenderPartial: no es necesario crear un método de acción. se usa cuando los datos que se mostrarán en la vista parcial ya están presentes en el modelo de la página actual.
Acción o RenderAction: requiere un método de acción secundario. se usa cuando los datos para mostrar en la vista tienen un modelo independiente.
fuente
Diferencias:
El tipo de retorno de
RenderPartial
esvoid
, donde comoPartial
devuelveMvcHtmlString
Sintaxis para invocar
Partial()
yRenderPartial()
métodos en vistas RazorSintaxis para invocar
Partial()
yRenderPartial()
métodos en vistas de formularios webLas siguientes son las 2 preguntas de la entrevista comunes relacionados con
Partial()
yRenderPartial()
cuándo se usaPartial()
másRenderPartial()
, y viceversa?La principal diferencia es que
RenderPartial()
devuelve void y la salida se escribirá directamente en la secuencia de salida, donde a medida que elPartial()
método regreseMvcHtmlString
, se puede asignar a una variable y manipularla si es necesario. Por lo tanto, cuando sea necesario asignar la salida a una variable para manipularla, use Partial (), o use RenderPartial ().¿Cuál es mejor para el rendimiento?
Desde una perspectiva de rendimiento, es mejor renderizar directamente a la secuencia de salida.
RenderPartial()
hace exactamente lo mismo y es mejor para el rendimientoPartial()
.fuente
Html.Partial
: vuelveMvcHtmlString
y lentoHtml.RenderPartial
: renderiza / escribe directamente en la secuencia de salida y regresa,void
y es muy rápido en comparación conHtml.Partial
fuente
Para "parcial" siempre lo uso de la siguiente manera:
Si hay algo que necesita incluir en una página que necesita ir a través del controlador (como lo haría con una llamada Ajax), use "Html.RenderPartial".
Si tiene una inclusión 'estática' que no está vinculada a un controlador per-se y solo en la carpeta 'compartida', por ejemplo, use "HTML.partial"
fuente
@Html.Partial
devuelve la vista en una cadena codificada en HTML y usa el mismoTextWriter
objeto de vista .@Html.RenderPartial
Este método vuelvevoid
.@Html.RenderPartial
es más rápido que@Html.Partial
La sintaxis para
PartialView
:fuente