140 votes

Explication ASP.NET MVC de la section @

Pour une application ASP.NET MVC, quelqu'un peut-il s'il vous plaît expliquer pourquoi et quand utiliser @section dans une vue?

J'ai vu dans cet exemple qu'il ajoute @section à Index.cshtml. Index.cshtml est-il une vue partagée? Que dit-on dans le code de l'exemple "Utilisez le code @section dans cette vue, mais pas dans cette vue?".

144voto

Frazell Thomas Points 4455

@section est pour la définition d'un contenu sont remplacer à partir d'une vision partagée. En gros, c'est une façon pour vous de régler votre avis partagé (similaire à une Page Web Forms).

Vous pourriez trouver Scott Gu de l'écriture sur ce très intéressant.

Edit: Basée sur la question de la clarification

L' @RenderSection de la syntaxe va dans la position commune, tels que:

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

Ce serait alors placée dans votre point de vue avec @Section syntaxe:

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

Dans MVC3+ vous pouvez définir la Mise en page de fichier à utiliser pour les visualiser directement ou vous pouvez avoir une vue par défaut pour tous les points de vue.

Point de vue commun paramètres peuvent être définis dans _ViewStart.cshtml qui définit la mise en page par défaut de la vue similaire à ceci:

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

Vous pouvez également définir la vision commune de l'utiliser directement dans le fichier, telles que les index.cshtml directement comme le montre cet extrait.

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

Il existe une variété de façons dont vous pouvez régler ce paramètre avec un peu plus mentionné dans cette SORTE de réponse.

21voto

John Mc Points 876

Javascript est un bon exemple. Vous voulez que cela soit au bas de la page qui est rendue dans le navigateur, car il s'agit d'une pratique recommandée.

Comment feriez-vous cela à partir d'une vue basée sur un modèle / page principale où vous ne pouvez accéder qu'au milieu de la page?

Pour cela, vous déclarez une section Scripts au bas de la page de mise en page. Ensuite, vous pouvez ajouter du contenu, dans ce cas Javascript inclus (j'espère!), De votre page Voir au bas de votre page de mise en page.

4voto

ischell Points 116

Vous souhaitez utiliser des sections lorsque vous voulez un peu de code/contenu à rendre dans un espace réservé qui a été défini dans une page de mise en page.

Dans l'exemple particulier est lié, il a défini la RenderSection dans le _Layout.cshtml. Une vue qui utilise cette disposition peut définir un @la section du même nom tel que défini dans la Mise en page, et il remplacera le RenderSection appel dans la mise en page.

Peut-être que vous vous demandez comment nous savons Index.cshtml utilise cette mise en page? Cela est dû à un peu de MVC/Rasoir convention. Si vous regardez la boîte de dialogue où il est l'ajout de la vue, la case "Utiliser la mise en page ou une page maître" est cochée, et juste en dessous de ce qu'il dit "Laissez vide si elle est définie dans un Rasoir _viewstart fichier". Il n'est pas indiqué, mais à l'intérieur, que _ViewStart.cshtml fichier est un code comme:

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

La façon viewstarts travail, c'est que tout cshtml fichier dans le même répertoire ou d'un enfant répertoires exécuter le ViewStart avant qu'il exécute lui-même.

Qui est ce qui nous dit que l'Index.cshtml utilise Partagé/_Layout.cshtml.

3voto

chrislhardin Points 731

Il vous permet de définir un @Section de code dans votre modèle que vous pouvez ensuite inclure dans d'autres fichiers. Par exemple, une barre latérale définie dans le modèle peut être référencée dans une autre vue incluse.

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

J'espère que cela t'aides.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X