¿Cuál es la forma adecuada de representar una plantilla secundaria?
Y cual es la diferencia? Ambos parecen funcionar para mí.
¿Y por qué @Html.RenderPartial()
ya no funciona?
fuente
¿Cuál es la forma adecuada de representar una plantilla secundaria?
Y cual es la diferencia? Ambos parecen funcionar para mí.
¿Y por qué @Html.RenderPartial()
ya no funciona?
Html.Partial("MyView")
Renderiza la vista "MyView" en un MvcHtmlString
. Sigue las reglas estándar para la búsqueda de vistas (es decir, verifique el directorio actual, luego verifique el Shared
directorio).
Html.RenderPartial("MyView")
Hace lo mismo que Html.Partial()
, excepto que escribe su salida directamente en el flujo de respuesta. Esto es más eficiente porque el contenido de la vista no se almacena en la memoria. Sin embargo, debido a que el método no devuelve ningún resultado, @Html.RenderPartial("MyView")
no funcionará. Usted tiene que envolver la llamada en un bloque de código en su lugar: @{Html.RenderPartial("MyView");}
.
RenderPage("MyView.cshtml")
Muestra la vista especificada (identificada por la ruta y el nombre del archivo en lugar de por el nombre de la vista) directamente en el flujo de respuesta, como Html.RenderPartial()
. Puede suministrar cualquier modelo que desee a la vista incluyéndolo como segundo parámetro
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
vs@{Html.RenderPartial("MyView");}
RenderPage
? Quiero anidar una página diferente especificando un parámetro de consulta específico, que a su vez filtraría los datos en esa página y, además, eliminaría su propio diseño.yo prefiero
Encima
Solo porque la sintaxis es más fácil y más legible. Aparte de eso, no parece haber diferencias en cuanto a funcionalidad.
EDITAR: Una ventaja de RenderPartial es que no tiene que especificar la ruta completa o la extensión del archivo, buscará los lugares comunes automáticamente.
fuente
RenderPage
por la sintaxis.El método RenderPartial no devuelve marcado HTML como la mayoría de los otros métodos auxiliares. En cambio, escribe contenido directamente en el flujo de respuesta, por lo que debemos llamarlo como una línea completa de C #, usando un punto y coma.
Esto es un poco más eficiente que almacenar en búfer el HTML renderizado desde la vista parcial, ya que se escribirá en el flujo de respuesta de todos modos. Si prefiere una sintaxis más coherente, puede utilizar el método Html.Partial , que hace exactamente lo mismo que el método RenderPartial , pero devuelve un fragmento HTML y se puede utilizar como @ Html.Partial ("Product", p).
fuente
También podemos pasar el modelo usando vistas parciales. @ Html.Partial ("MyView", "MyModel");
fuente
Lo anterior no funciona en ASP.NET MVC. Solo funciona en páginas web.
Deberá utilizar lo anterior en ASP.NET MVC.
fuente