Answers:
如果
(1)您具有这样的_Layout.cshtml视图
<html>
<body>
@RenderBody()
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
@RenderSection("scripts", required: false)
</html>
(2)您有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)您有About.cshtml
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
在布局页面上,如果需要设置为false“ @RenderSection(” scripts“,required:false)”,则当页面呈现且用户位于关于页面时,contacts.js不会呈现。
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
如果需要,则将其设置为true“ @RenderSection(” scripts“,required:true)”,当页面呈现且用户位于ABOUT页面上时,将呈现contacts.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>
简而言之,当设置为true时,无论是否需要在其他页面上,它将以任何方式呈现。如果设置为false,则仅在呈现子页面时才呈现。
这里的Rendersection定义 MSDN
在布局页面中,呈现命名节的内容。MSDN
在_layout.cs页面中
@RenderSection("Bottom",false)
这里呈现bootom部分的内容,并指定false
boolean属性以指定是否需要该部分。
@section Bottom{
This message form bottom.
}
这意味着,如果要在所有页面中都使用底部,则必须使用false作为Rendersection方法的第二个参数。
假设我有GetAllEmployees.cshtml
<h2>GetAllEmployees</h2>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
// do something ...
</thead>
<tbody>
// do something ...
</tbody>
</table>
//Added my custom scripts in the scripts sections
@section Scripts
{
<script src="~/js/customScripts.js"></script>
}
还有另一个没有脚本的视图“ GetEmployeeDetails.cshtml”
<h2>GetEmployeeByDetails</h2>
@Model.PageTitle
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
// do something ...
</thead>
<tbody>
// do something ...
</tbody>
</table>
我的布局页面“ _layout.cshtml”
@RenderSection("Scripts", required: true)
因此,当我导航到GetEmployeeDetails.cshtml时。我收到一个错误,即GetEmployeeDetails.cshtml中没有要呈现的部分脚本。如果我将标志@RenderSection()
从更改required : true
为``required:false`。这意味着呈现视图@section脚本中定义的脚本(如果存在),否则什么也不做。精致的方法将在_layout.cshtml中
@if (IsSectionDefined("Scripts"))
{
@RenderSection("Scripts", required: true)
}
Section not defined: "scripts".
所需的标志设置为时呈现“关于”页面时会得到一个提示true
。