Para una aplicación ASP.NET MVC, vi este artículo de blog . El autor ScottGu agrega @section
al Index.cshtml.
Tengo un par de preguntas (en referencia al artículo anterior):
- ¿Index.cshtml es una vista compartida?
- El código de ejemplo usa
@section
código en una vista particular. ¿Por qué?
¿Alguien puede explicar por qué y cuándo usaría @section
en una Vista?
asp.net-mvc
Un falso
fuente
fuente
Respuestas:
@section
es 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 la redacción de Scott Gu sobre esto muy interesante .
Editar: Basado en aclaraciones de preguntas adicionales
La
@RenderSection
sintaxis entra en la Vista compartida, como:Esto se colocaría en su vista con la
@Section
sintaxis: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:
También puede configurar la Vista compartida para usarla directamente en el archivo, como index.cshtml directamente como se muestra en este fragmento.
Hay una variedad de formas en que puede ajustar esta configuración con algunas más mencionadas en esta respuesta SO .
fuente
Un buen ejemplo es Javascript. Desea que esté en la parte inferior de la página que se muestra 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, declara 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.
fuente
Desea usar secciones cuando desea que se procese un poco de código / contenido en un marcador de posición que se ha definido en una página de diseño.
En el ejemplo específico que vinculó, él ha definido RenderSection en _Layout.cshtml. Cualquier vista que use ese diseño puede definir una @sección del mismo nombre que se define en Diseño, y reemplazará la llamada 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 en el que está agregando la vista, la casilla "Usar diseño o página maestra" está marcada, y justo debajo dice "Dejar en blanco si está configurado en un archivo Razor _viewstart". No se muestra, pero dentro de ese archivo _ViewStart.cshtml hay un código como:
La forma en que funciona viewstarts es que cualquier archivo cshtml dentro del mismo directorio o directorios secundarios ejecutará ViewStart antes de que se ejecute.
Que es lo que nos dice que Index.cshtml usa Shared / _Layout.cshtml.
fuente
Le permite definir un
@Section
código en su plantilla que luego puede incluir en otros archivos. Por ejemplo, una barra lateral definida en la plantilla, podría ser referenciada en otra vista incluida.Espero que esto ayude.
fuente