asp.net MVCの@RenderSectionとは?

RenderSectionは何のためにあり、どのように機能するのでしょうか?バンドルが何をするのかは理解していますが、これが何をするのか、そしてそれはおそらく重要なことなのだとまだ理解していません。

@RenderSection("scripts", required: false)

おそらく、それを使用する方法についての小さな例?

ソリューション

このような_Layout.cshtmlのビューがある場合



        @RenderBody()
        @RenderSection("scripts", required: false)

とすると、index.cshtml のコンテンツビューは以下のようになります。

@section scripts {
     <script type="text/javascript">alert('hello');</script>
}

は、レイアウトページを使用するビューがスクリプトセクションを持つ必要があるかどうかを示します。

解説 (0)

もし

(1) このような _Layout.cshtml ビューがあります。



        @RenderBody()


    <script type="text/javascript" src="~/lib/layout.js"></script>
    @RenderSection("scripts", required: false)

(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ページが表示されるようになります。


        <div>About<div>             

        <script type="text/javascript" src="~/lib/layout.js"></script>

requiredがtrueに設定されている場合 "@RenderSection("scripts", required: true)", ページがレンダリングされ、ユーザーがABOUTページにいるとき、contacts.jsはまだレンダリングされます。


    <div>About<div>             

    <script type="text/javascript" src="~/lib/layout.js"></script>
    <script type="text/javascript" src="~/lib/contacts.js"></script>

*要するに、true に設定すると、他のページで必要であろうとなかろうと、とにかくレンダリングされるようになります。 false**に設定すると、子ページがレンダリングされるときにのみレンダリングされます。

解説 (2)

MSDNに掲載されているRendersectionの定義を以下に示します。

レイアウトページで、指定したセクションの内容をレンダリングしますMSDN

_layout.cs ページに

@RenderSection("Bottom",false)

ここでは、bootomセクションの内容をレンダリングし、そのセクションが必要かどうかを指定するためにfalseブール型プロパティを指定しています。

@section Bottom{
       This message form bottom.
}

つまり、すべてのページで最下段のセクションを表示したい場合は、Rendersectionメソッドの2番目のパラメータにfalseを指定する必要があります。

解説 (0)