Saltar al contenido

ASP.NET MVC: ¿Cuál es el propósito de @section?

Solución:

@section sirve para definir un contenido que se anula desde una vista compartida. Básicamente, es una forma de ajustar su vista compartida (similar a una página maestra en formularios web).

Puede encontrar muy interesante el escrito de Scott Gu sobre esto.

Editar: Basado en aclaraciones de preguntas adicionales

los @RenderSection la sintaxis entra en la vista compartida, como:

<div id="sidebar">
    @RenderSection("Sidebar", required: false)
</div>

Esto luego se colocaría en su vista con @Section sintaxis:

@section Sidebar{
    <!-- Content Here -->
}

En MVC3 + puede definir el archivo de diseño que se utilizará para la vista directamente o puede tener una vista predeterminada para todas las vistas.

La configuración de vista común se puede establecer en _ViewStart.cshtml, que define la vista de diseño predeterminada similar a esta:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

También puede configurar la Vista compartida para usarla directamente en el archivo, como index.cshtml directamente como se muestra en este fragmento.

@{
    ViewBag.Title = "Corporate Homepage";
    ViewBag.BodyID = "page-home";
    Layout = "~/Views/Shared/_Layout2.cshtml";
}

Hay una variedad de formas en que puede ajustar esta configuración con algunas más mencionadas en esta respuesta SO.

Un buen ejemplo es Javascript. Desea que esté en la parte inferior de la página que se representa en el navegador porque esta es la mejor práctica.

¿Cómo haría esto desde una vista basada en un diseño / página maestra donde solo puede acceder a la mitad de la página?

Para ello, declare una sección de Scripts en la parte inferior de la página Diseño. Luego puede agregar contenido, en este caso Javascript incluye (¡espero!), Desde su página Ver hasta la parte inferior de su página de diseño.

Desea utilizar secciones cuando desee que un fragmento de código / contenido se represente en un marcador de posición que se ha definido en una página de diseño.

En el ejemplo específico que vinculó, ha definido RenderSection en _Layout.cshtml. Cualquier vista que use ese diseño puede definir una @section con el mismo nombre que se define en Layout, y reemplazará la llamada a RenderSection en el diseño.

Quizás se esté preguntando cómo sabemos que Index.cshtml usa ese diseño. Esto se debe a un poco de la convención MVC / Razor. Si observa el cuadro de diálogo donde está agregando la vista, la casilla “Usar diseño o página maestra” está marcada, y justo debajo dice “Dejar vacío si está configurado en un archivo _viewstart de Razor”. No se muestra, pero dentro de ese archivo _ViewStart.cshtml hay un código como:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

La forma en que funcionan viewstarts es que cualquier archivo cshtml dentro del mismo directorio o directorios secundarios ejecutará ViewStart antes de que se ejecute por sí mismo.

Que es lo que nos dice que Index.cshtml usa Shared / _Layout.cshtml.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *