Si
(1) tiene una vista _Layout.cshtml como esta
<html>
<body>
@RenderBody()
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
@RenderSection("scripts", required: false)
</html>
(2) tienes Contactos.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) tienes About.cshtml
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
En su página de diseño, si es necesario, se establece en falso "@RenderSection (" scripts ", requerido: falso)", cuando la página se representa y el usuario está en la página, los contactos.js no se procesan.
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
si se requiere se establece en verdadero "@RenderSection (" scripts ", requerido: verdadero)", Cuando la página se representa y el usuario está en la página ACERCA DE, se contacta TODOS los contactos .js.
<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 CORTO, cuando se establece en verdadero , ya sea que lo necesite o no en otras páginas, se representará de todos modos. Si se establece en falso , solo se representará cuando se represente la página secundaria.
Section not defined: "scripts".
al representar tu página Acerca de cuando configures el marcador requeridotrue
.Aquí la definición de Rendersection de
MSDN
En la página _layout.cs poner
Aquí representa el contenido de la sección bootom y especifica la
false
propiedad booleana para especificar si la sección es obligatoria o no.Eso significa que si desea ir a la sección inferior en todas las páginas, debe usar falso como el segundo parámetro en el método Rendersection.
fuente
Supongamos que tengo GetAllEmployees.cshtml
Y otra vista "GetEmployeeDetails.cshtml" sin scripts
Y mi página de diseño "_layout.cshtml"
Entonces, cuando navego a GetEmployeeDetails.cshtml. Me sale el error de que no hay secuencias de comandos de sección para ser representados en GetEmployeeDetails.cshtml. Si cambio la bandera
@RenderSection()
derequired : true
a `` requerido: falso`. Significa renderizar los scripts definidos en los scripts @section de las vistas si están presentes. De lo contrario, no haga nada. Y el enfoque refinado estaría en _layout.cshtmlfuente