RenderSectionは何のためにあり、どのように機能するのでしょうか?バンドルが何をするのかは理解していますが、これが何をするのか、そしてそれはおそらく重要なことなのだとまだ理解していません。
@RenderSection("scripts", required: false)
おそらく、それを使用する方法についての小さな例?
このような_Layout.cshtmlのビューがある場合
<html>
<body>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
とすると、index.cshtml のコンテンツビューは以下のようになります。
@section scripts {
<script type="text/javascript">alert('hello');</script>
}
は、レイアウトページを使用するビューがスクリプトセクションを持つ必要があるかどうかを示します。
もし
(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>
レイアウトページで、requiredをfalseにすると "@RenderSection("scripts", required: false)", ページが表示され、ユーザーがaboutページにいる場合、contacts.jsは表示されません'この場合、aboutページが表示されるようになります。
<html>
<body><div>About<div>
</body>
<script type="text/javascript" src="~/lib/layout.js"></script>
</html>
requiredが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**に設定すると、子ページがレンダリングされるときにのみレンダリングされます。
MSDNに掲載されているRendersectionの定義を以下に示します。
レイアウトページで、指定したセクションの内容をレンダリングしますMSDN。
_layout.cs ページに
@RenderSection("Bottom",false)
ここでは、bootomセクションの内容をレンダリングし、そのセクションが必要かどうかを指定するためにfalse
ブール型プロパティを指定しています。
@section Bottom{
This message form bottom.
}
つまり、すべてのページで最下段のセクションを表示したい場合は、Rendersectionメソッドの2番目のパラメータにfalseを指定する必要があります。