E se
(1) você tem uma visualização _Layout.cshtml como esta
<html>
<body>
@RenderBody()
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
@RenderSection("scripts", required: false)
</html>
(2) você tem 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) você tem About.cshtml
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
Na página de layout, se necessário, estiver definido como false "@RenderSection (" scripts ", necessário: false)", quando a página é renderizada e o usuário está sobre a página, o Contacts.js não é processado.
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
se necessário estiver definido como true "@RenderSection (" scripts ", necessário: true)", quando a página for renderizada e o usuário estiver na página SOBRE, a página Contacts.js AINDA será renderizada.
<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>
EM BREVE, quando definido como true , independentemente de você precisar ou não em outras páginas, ele será renderizado de qualquer maneira. Se definido como false , ele será renderizado apenas quando a página filha for renderizada.
Section not defined: "scripts".
quando renderizar sua página Sobre ao definir o sinalizador necessáriotrue
.Aqui a definição de Rendersection de
MSDN
Na página _layout.cs, coloque
Aqui, renderize o conteúdo da seção bootom e especifique a
false
propriedade booleana para especificar se a seção é necessária ou não.Esse significado, se você deseja a seção inferior em todas as páginas, deve usar false como o segundo parâmetro no método Rendersection.
fonte
Suponha que eu tenha GetAllEmployees.cshtml
E outra visualização "GetEmployeeDetails.cshtml" sem scripts
E minha página de layout "_layout.cshtml"
Então, quando eu navego para GetEmployeeDetails.cshtml. Recebo o erro de que não há scripts de seção a serem renderizados no GetEmployeeDetails.cshtml. Se eu mudar a flag
@RenderSection()
derequired : true
para `` required: false`. Significa renderizar os scripts definidos nos scripts da seção @ das visualizações, se presentes. Caso contrário, não faça nada. E a abordagem refinada estaria em _layout.cshtmlfonte