Dans la syntaxe MVC/Razor, j'essaie de comprendre pourquoi nous avons besoin de @RenderBody
.
Par exemple (code tiré de exemple )
<html>
<head>
<meta charset="utf-8" />
<title>My WebSite</title>
<style>
#container { width: 700px; }
#left { float: left; width: 150px; }
#content { padding: 0 210px 0 160px; }
#right { float: right; width: 200px; }
.clear { clear: both; }
</style>
</head>
<body>
<div id="container">
<div id="left">
@RenderSection("left", required:false)
</div>
<div id="content">
@RenderBody()
</div>
<div id="right">
@RenderSection("right", required:false)
</div>
<div class="clear"></div>
</div>
</body>
</html>
@{
Layout = "~/_3ColLayout.cshtml";
}
<h1>Main Content</h1>
@section left {
<h1>Left Content</h1>
}
@section right {
<h1>Right Content</h1>
}
Pourquoi ne puis-je pas simplement utiliser @RenderSection
pour tout, comme ceci:
<div id="content">
@RenderSection("Body", required:true)
</div>
@section Body{
<h1>Body Content</h1>
}
Tout simplement pour des raisons de commodité. Rendre le corps est quelque chose que vous feriez très probablement, il est bon d'avoir une fonction dédiée pour cela. Vous empêche de déclarer une @section pour le corps et donne une fonction plus facile à appeler.
Commencer avec @RenderBody
, c'est vital. Votre _layout doit l'avoir. C'est là que votre vue sera rendue. Si vous la laissez de côté, votre application mourra (je pense que lors de l'exécution, car les vues ne sont pas compilées).
[Correction: Sans Renderbody, la vue référençant cette disposition particulière mourra au moment de l'exécution. (Il est important de noter que la disposition est elle-même facultative.)]
Les sections sont des blocs de code définis dans votre vue avec des noms similaires
pourrait avoir un bloc de code correspondant dans votre vue.
@section Navbar{
<!-- Content Here -->
}
Je souligne ( pourrait parce que la barre de navigation est supprimée required: false
Les sections sont un moyen pour chaque vue de partager un élément de fonctionnalité/balisage avec le _layout.
Suivi: Dans ma modeste période de développement MVC, j'ai appris à faire un usage modeste des sections.
RenderBody
est requis, car c'est ce qui rend chaque vue. RenderSection
possède un paramètre facultatif qui vous permet de marquer la section comme non requise.
ici est des informations de base sur RenderBody () et RenderPage ().