Si
(1) vous avez une vue _Layout.cshtml comme celle-ci
<html>
<body>
@RenderBody()
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
@RenderSection("scripts", required: false)
</html>
(2) vous avez Contacts.cshtml
@section Scripts{
<script type="text/javascript" src="~/lib/contacts.js"></script>
}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
(3) vous avez About.cshtml
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
Sur votre page de mise en page, si requis est défini sur false "@RenderSection (" scripts ", required: false)", Lorsque la page est rendue et que l'utilisateur est sur la page à propos, le fichier contacts.js ne s'affiche pas.
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
si requis est défini sur true "@RenderSection (" scripts ", required: true)", Lorsque la page est rendue et que l'utilisateur est sur la page À PROPOS, les contacts.js sont TOUJOURS rendus.
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
<script type="text/javascript" src="~/lib/contacts.js"></script>
</html>
EN BREF, lorsqu'il est défini sur true , que vous en ayez besoin ou non sur d'autres pages, il sera rendu de toute façon. S'il est défini sur false , il sera rendu uniquement lorsque la page enfant est rendue.
Section not defined: "scripts".
lors du rendu de votre page À propos lors de la définition de l'indicateur requistrue
.Voici la définition de Rendersection à partir de
MSDN
Dans la page _layout.cs, mettez
Ici, rend le contenu de la section bootom et spécifie la
false
propriété booléenne pour spécifier si la section est requise ou non.Cela signifie que si vous souhaitez afficher la section inférieure de toutes les pages, vous devez utiliser false comme deuxième paramètre de la méthode Rendersection.
la source
Supposons que j'ai GetAllEmployees.cshtml
Et une autre vue "GetEmployeeDetails.cshtml" sans scripts
Et ma page de mise en page "_layout.cshtml"
Ainsi, lorsque je navigue vers GetEmployeeDetails.cshtml. J'obtiens l'erreur qu'il n'y a aucun script de section à rendre dans GetEmployeeDetails.cshtml. Si je change le drapeau
@RenderSection()
derequired : true
à `` obligatoire: faux ''. Cela signifie rendre les scripts définis dans les scripts @section des vues si présentes. Sinon, ne rien faire. Et l'approche raffinée serait dans _layout.cshtmlla source