tag net for asp asp.net-mvc

for - Explicación de ASP.NET MVC de @section



tag helper asp net core 2 (4)

Desea usar secciones cuando desee que se renderice un poco de código / contenido en un marcador de posición que se haya definido en una página de diseño.

En el ejemplo específico que ha vinculado, ha definido RenderSection en _Layout.cshtml. Cualquier vista que use ese diseño puede definir una @sección del mismo nombre como se define en Diseño, y reemplazará la llamada RenderSection en el diseño.

Quizás se pregunte cómo sabemos que Index.cshtml utiliza ese diseño. Esto se debe a un poco de la convención MVC / Razor. Si mira el cuadro de diálogo donde está agregando la vista, se marca el cuadro "Usar diseño o página maestra", y justo debajo de él dice "Dejar en blanco si está configurado en un archivo _viewstart Razor". No se muestra, pero dentro de ese archivo _ViewStart.cshtml está el código como:

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

La forma en que funciona viewstarts es que cualquier archivo cshtml dentro del mismo directorio o directorios secundarios ejecutará ViewStart antes de ejecutarse.

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

Para una aplicación ASP.NET MVC,

¿Puede alguien explicar por qué y cuándo usaría @section en una vista?

Vi en este ejemplo , él agrega @section al Index.cshtml. ¿Index.cshtml es una Vista compartida?

Lo que en el código del ejemplo dice "¿Usar @section code en esta View pero no en View?".


Le permite definir una @Section de 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.

//This could be used to render a @Section defined as @Section SideBar { ... @RenderSection("SideBar", required: false);

Espero que esto ayude.


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 lo haría desde una Vista basada en un Diseño / Página maestra donde solo puede acceder al centro 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 (¡lo espero!) Desde su página Ver hasta la parte inferior de su página de diseño.


@section es para definir un contenido que se reemplaza 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 que weblogs.asp.net/scottgu/archive/2010/12/30/… .

Editar: basado en aclaraciones adicionales de preguntas

La sintaxis @RenderSection va a la vista compartida, como por ejemplo:

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

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

@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 establecer la Vista compartida para usar 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 .