web-dev-qa-db-fra.com

Que signifie ce code de rendersection?

Je suis débutant en Asp.Net MVC3. Quelqu'un peut-il s'il vous plaît expliquer ce que signifie ce code:

@section head
{
    @RenderSection("head", false)
}

Sur l'article de ScottGu:

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

il y a un exemple de RenderSection mais cela définit @section puis quelque part @RenderSection est utilisé. Dans ce cas, la section section est définie et dans celle-ci, la même section est rendue, ce qui m'a confondue.

Que fait RenderSection et comment trouver ce qui est rendu ici?

33
Tim Tom

Scott a écrit à un moment donné

Le premier paramètre de la méthode d'assistance «RenderSection ()» spécifie le nom de la section que nous voulons rendre à cet endroit dans le fichier modèle de mise en page. Le second paramètre est optionnel et nous permet de définir si la section que nous rendons est requise ou non. Si un section est "obligatoire", Razor émettra une erreur lors de l'exécution si cette section n'est pas implémentée dans un modèle de vue basé sur le fichier de présentation (ce qui peut faciliter la recherche du contenu erreurs).

Donc, ce que fait RenderSection, c'est le rendu d'une section définie dans le modèle/la vue (pas le _Layout général) . .

Donc dans l’ensemble, vous avez une section appelée "tête" qui affiche une section appelée "tête" dans une vue plus bas/imbriquée.

Edit: regardez http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx pour voir ce que je veux dire avec des vues imbriquées - mais notez que cet article a plus d'un an maintenant.

MasterLayout:

@RenderSection("head", false)

SubLayout:

@{
    Layout = "~/Views/_MasterLayout.cshtml";
}
@section head
{
    @RenderSection("head")
}

Contenu:

@{
    Layout = "~/Views/_SubLayout.cshtml";
}
@section head
{
    <title>Content-Layout</title>
}
46
Brunner

Vous définissez la section dans une vue et vous la rendez dans le fichier _Layout.cshtml.

Dans votre page de mise en page (maître), placez ceci:

 @RenderSection("head", false)

Dans votre page de visualisation, placez ceci:

@section head {

PUT VIEW SPECIFIC CODE HERE
}

Ici "tête" est le nom de la section que vous pouvez définir dans votre page de vue.

C'est un peu comme ContentPlaceHolder que nous utilisons dans les formulaires Web asp.net.

17
Kapil Khandelwal

En utilisant @rendersection dans votre fichier _Layout, vous avez le contrôle sur la disposition et l'ordre des sections dans votre code .cshtml principal (disons qu'il s'appelle index.cshtml).

Par exemple, si vous avez un @RenderSection ("scripts", false) à la fin de votre fichier _Layout, alors même si la section "scripts" est placée en haut de vos fichiers index.cshtml, elle sera restituée en bas. . Vous garantissez ainsi que toutes les sections de script sont chargées de manière cohérente dans votre application.

Si, à l'avenir, vous décidiez, pour une raison quelconque, de déplacer tous les scripts dans la section head, vous pouvez facilement le faire en déplaçant simplement une ligne de code dans le fichier _Layout.

0
user3094826