RenderBody() et RenderSection () doivent être sur chaque disposition enfant?
j'ai trois de mise en page simple,
_Layout.cshtml (c'est la présentation de la base)
@RenderSection("something", required: false)
@RenderBody()
_Main.cshtml
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section something {
Hey I'm actually on the _Main layout.
}
Index.cshtml
@{
Layout = "~/Views/Shared/_Main.cshtml";
}
quand j'essaie de rendre la vue D'Index dans une action, j'obtiens cette erreur,
la méthode "RenderBody" n'a pas été appelée pour la page de mise en page "~/Views / Shared / _Main.cshtml".
Mais attendez, _Main.cshtml
a un layout parent qui a déjà un RenderBody()
.
Donc je suis mal, dois-je appeler RenderBody()
pour chaque disposition d'enfant?
4 réponses
Oui, RenderBody devrait figurer sur chaque page de mise en page, quel que soit le site de nidification.
@RenderBody
fonctionne comme un paramètre pour le moteur de savoir où déposer le contenu de la vue en utilisant la page de mise en page.
Ce code devrait fonctionner correctement:
_Layout.cshtml
@RenderSection("something", required: false)
@RenderBody()
_Main.cshtml
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section something {
Hey I'm actually on the _Main layout.
}
Index.cshtml
@{
Layout = "~/Views/Shared/_Main.cshtml";
}
<div id="Index Content Here">
@RenderBody()
</div>
index.CSHTML doit être rendu comme ci-dessous:
<head>
Hey I'm actually on the _Main layout.
</head>
<div id="Index Content Here">
</div>
</div>
les Sections peuvent être rendues optionnelles en les rendant avec required: false
@RenderSection("SectionName", required: false)
essayez d'inclure la section dans la dernière vue.
@{
Layout = "~/Views/Shared/_Main.cshtml";
}
@section something {
content
}
mise à jour: OK, je ne suis pas d'accord pour dire que vous avez aussi besoin d'écrire @RenderSection dans _main layout
@section something {
Hey I'm actually on the _Main layout.
@RenderSection("something", required:false)
}
enter code here