Afl*_*red 155 asp.net-mvc
它的目的是什么以及它是如何运作的.我理解捆绑包的作用,但我还没弄清楚它的作用和它可能很重要.
@RenderSection("scripts", required: false)
Run Code Online (Sandbox Code Playgroud)
也许是一个如何使用它的小例子?
cgi*_*els 268
如果您有这样的_Layout.cshtml视图
<html>
<body>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
那么你可以像这样拥有一个index.cshtml内容视图
@section scripts {
<script type="text/javascript">alert('hello');</script>
}
Run Code Online (Sandbox Code Playgroud)
在需要的指示使用布局页面视图是否必须有一个脚本部分
小智 19
如果
(1)你有一个像这样的_Layout.cshtml视图
<html>
<body>
@RenderBody()
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
@RenderSection("scripts", required: false)
</html>
Run Code Online (Sandbox Code Playgroud)
(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>
Run Code Online (Sandbox Code Playgroud)
(3)你有About.cshtml
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2> Contacts</h2>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在您的布局页面上,如果需要设置为false"@RenderSection("scripts",required:false)",当页面渲染和用户在页面上时,contacts.js不会渲染.
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
Run Code Online (Sandbox Code Playgroud)
如果需要设置为true"@RenderSection("scripts",required:true)",当页面渲染和用户在ABOUT页面上时,contacts.js STILL将被渲染.
<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>
Run Code Online (Sandbox Code Playgroud)
IN SHORT,当设置为true时,无论你是否需要它在其他页面上,无论如何它都会被渲染.如果设置为false,则仅在呈现子页面时呈现.
假设我有 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>
}
Run Code Online (Sandbox Code Playgroud)
另一个没有脚本的视图“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>
Run Code Online (Sandbox Code Playgroud)
和我的布局页面“_layout.cshtml”
@RenderSection("Scripts", required: true)
Run Code Online (Sandbox Code Playgroud)
因此,当我导航到 GetEmployeeDetails.cshtml 时。我收到错误消息,指出 GetEmployeeDetails.cshtml 中没有要呈现的部分脚本。如果我将标志从 更改@RenderSection()为required : true“required : false”。这意味着渲染视图的 @section 脚本中定义的脚本(如果存在)。否则,不执行任何操作。改进的方法将在 _layout.cshtml 中
@if (IsSectionDefined("Scripts"))
{
@RenderSection("Scripts", required: true)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100442 次 |
| 最近记录: |