Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 13486|Respuesta: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Copiar enlace]
Publicado en 19/7/2015 23:37:53 | | |
1. RenderBody
En el motor Razor, no hay una "página maestra", sino que se coloca una página llamada "layout" (_Layout.cshtml) en la carpeta de vista compartida. En esta página, verás una afirmación en la etiqueta:
@RenderBody()
De hecho, funciona de forma similar al control del servidor en la página maestra: cuando se crea una vista basada en esta página de diseño, el contenido de la vista se fusiona con la página de maquetación y el contenido de la vista recién creada se renderiza entre las etiquetas mediante el método @RenderBody() de la página de diseño.
Este método no requiere parámetros y solo puede aparecer una vez.
2. RenderPage
Como puedes imaginar por el nombre, este método consiste en presentar una página. Por ejemplo, el encabezado fijo en una página web puede colocarse por separado en un archivo de vista compartida, y luego llamarse en este método en la página de diseño, de la siguiente manera:
@RenderPage("~/Vistas/Compartido/_Header.cshtml")
Con parámetros
@RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you")
Llama a la página para obtener los parámetros:
Haz que los parámetros pasen por RenderPage().
@PageData["param"]
3. RenderSection
La página de diseño también tiene el concepto de sección, es decir, si una sección está definida en una plantilla de vista, puede presentarse por separado de la siguiente manera:
@RenderPage("~/Vistas/Compartido/_Header.cshtml")
@RenderBody()
//模板里添加了一个节
@RenderSection ("cabeza")
Por supuesto, también define la sección en la vista, de lo contrario ocurrirá una excepción:
@section cabeza{
//do
}
Para evitar excepciones por secciones faltantes, puedes dar a RenderSection() un segundo argumento:
@RenderSection("Submenú", falso)
o
@if (IsSectionDefined("Submenú"))
{
@RenderSection("Submenú", falso)
}
si no,
{
<p>¡La sección de Submenú no está definida!</p>
}
4.@Html.Partial
Partial crea su propia instancia de TextWriter cada vez y almacena el contenido en caché en memoria. Finalmente, envía toda la salida del escritor a un objeto MvcString
La mayoría de las veces, usaremos @{ html.RenderPartial("details"); en lugar de @Html. Parcial
La diferencia entre RenderPage() y RenderPartial().
Las llamadas a RenderPage() solo pueden usarlo para pasar datos más allá de ellos.
RenderPartial() puede usar datos de vista, modelo y otros datos.
La diferencia entre Html.RenderPartial y Html.RenderAction
Html.RenderPartial es adecuado para UserControl repetidos y solo necesita usarse para renderizar contenido a través de modelos o para UserControls para anuncios. Html.RenderAction llamará primero al método de Acción del Controlador; si este UserControl necesita obtener datos de la base de datos para renderizar (leer la base de datos a través de la Acción), este método es más adecuado para este momento.
5.Html.Parcial ("MyView")
Devuelve un flujo de intento como una cadena MvcHtmlString, siguiendo las reglas estándar de enrutamiento.
Renderiza la vista "MyView" en una cadena MvcHtml. Sigue las reglas estándar para la búsqueda de vistas (es decir, revisar el directorio actual y luego comprobar el directorio compartido).
Html.RenderPartial("MyView")

Similar a Html.Partial(), la diferencia es que se escribe directamente en la página sin caché. 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 está almacenado en memoria en búfer. Sin embargo, como el método no devuelve ninguna salida, @Html.RenderPartial("MyView") no funcionará. Tienes que envolver la llamada en un bloque de código: @{Html.RenderPartial("MyView"); }.
RenderPage("MyView.cshtml")

Devuelve una vista especial con rutas, nombres de archivos, etc., y genera directamente como Heml.RenderPartial() sin caché. Las variables del modelo pueden ser pasadas. Renderiza la vista especificada (identificada por el nombre de ruta y archivo en lugar de por el nombre de la vista) directamente en el flujo de respuesta, como Html.RenderPartial(). Puedes aportar cualquier modelo que quieras a la vista incluyéndolo como segundo parámetro
RenderPage("MyView.cshtml",MyModel)

Prefiero
@RenderPage("_LayoutHeader.cshtml")Cambio
@{Html.RenderPartial("_LayoutHeader"); }Solo porque la sintaxis es más fácil y más legible. Aparte de eso, no parece haber diferencias en cuanto a funcionalidades.





Anterior:ASP.NET---- implementar un botón de clic o un enlace para que aparezca el diálogo de inicio de sesión
Próximo:Configura la CheckBoxList para que no envolva la línea
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com