RenderBody() et RenderSection() doit être sur chaque enfant de mise en page?
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 l'Index de la vue dans une action, j'ai eu cette erreur,
La "RenderBody" la méthode n'a pas été appelé pour la mise en page
"~/Views/Shared/_Main.cshtml".
Mais attendez, _Main.cshtml
a un parent de mise en page qui a déjà un RenderBody()
.
Donc je suis mal, dois-je appeler RenderBody()
pour chaque enfant de mise en page?
- non c'est juste une erreur.
- Je ne suis pas sûr que vous pouvez imbriquer les mises en page comme ça.
- Oui, vous pouvez imbriquer des mises en page. Habituellement, vous pouvez avoir différents intérieure de la mise en page des pages ou conditionnelle d'afficher le contenu de votre point de vue.
- Ah ok, n'avait pas essayé moi-même.
- Parce que vous êtes à l'aide de _Main.cshtml que la mise en page, vous devez ajouter RenderBody()
Vous devez vous connecter pour publier un commentaire.
Oui, RenderBody devrait figurer sur chaque page de mise en page, quel que soit le site de nidification.
@RenderBody
fonctionne comme un espace réservé pour le moteur pour savoir où déposer le contenu de la vue à l'aide de la mise en page.Ce code devrait fonctionner correctement:
_Layout.cshtml
_Main.cshtml
Index.cshtml
index.cshtml devraient être rendus que par ci-dessous:
Sections peut être rendu facultatif par le rendu avec
required: false
Essayez d'inclure l'article dans le dernier point de vue.
Mise à JOUR: d'Accord, je fogot-à-dire que vous devez aussi écrire @RenderSection dans _Main disposition