Подтвердить что ты не робот

Что такое @RenderSection в asp.net MVC

Какова цель @RenderSection и как он работает? Я понимаю, что делают связки, но мне еще предстоит выяснить, что это делает, и это, вероятно, важно.

@RenderSection("scripts", required: false)

Возможно, небольшой пример о том, как его использовать?

4b9b3361

Ответ 1

Если у вас есть вид _Layout.cshtml, подобный этому

<html>
    <body>
        @RenderBody()
        @RenderSection("scripts", required: false)
    </body>
</html>

то вы можете иметь представление содержимого index.cshtml, подобное этому

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

обязательный параметр указывает, должен ли вид с использованием страницы макета иметь раздел сценариев

Ответ 2

Если

(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 (" скрипты ", обязательно: false)". Когда страница отображается и пользователь находится на странице, contacts.js не отображает.

    <html>
        <body><div>About<div>             
        </body>
        <script type="text/javascript" src="~/lib/layout.js"></script>
    </html>

если требуется, установлено значение true "@RenderSection (" scripts ", required: true)". Когда страница отображается и пользователь находится на странице ОО, отображается информация о ссылках на контакт. 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>

В КОРОТКЕ, если установлено значение истина, независимо от того, нужна она вам или нет на других страницах, она будет отображаться в любом случае. Если установлено значение false, оно будет отображаться только при отображении дочерней страницы.

Ответ 3

Здесь определение Rendersection от MSDN

На страницах макета отображает содержимое именованного раздела. MSDN

На странице _layout.cs положить

@RenderSection("Bottom",false)

Здесь визуализируется содержимое раздела bootom и указывается false логическое свойство, чтобы указать, является ли раздел обязательным или нет.

@section Bottom{
       This message form bottom.
}

Это означает, что если вы хотите использовать нижний раздел на всех страницах, тогда вы должны использовать false в качестве второго параметра в методе Rendersection.