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

Razor RenderSection в тегах script - Как вставить script из представления в функцию шаблона

Я использую MVC 3 с движком просмотра Razor, и я хотел бы добавить script из моих представлений в один $(документ).ready(function() {}); на главной странице.

Я пробовал:

    <script type="text/javascript">
    $(document).ready(function () {
        //OnLoad Script load area
        '@RenderSection("DocumentReady", false)'
    });
</script>

В моем хозяине, а затем:

@section DocumentReady{
   alert('');
}

На мой взгляд, но неудивительно это не работает: (

Есть ли простой способ добавить js-код к главной функции? Возможно, мне здесь не хватает чего-то очень простого. Я хочу сказать, что у меня есть много небольших элементов управления представлением, которые используют функцию $(document).ready(), и я не хочу, чтобы страница клиента была замусорена этими и их сопровождающими тегами script.

Спасибо.

4b9b3361

Ответ 1

Вам не нужны одиночные кавычки вокруг вызова RenderSection в вашем макете:

<script type="text/javascript">
    $(document).ready(function () {
        @RenderSection("DocumentReady", false)
    });
</script>

и внутри представления:

@section DocumentReady {
    alert('');
}

Но он, вероятно, будет более читабельным, если в вашем макете есть раздел сценариев:

@RenderSection("Scripts", false)

и внутри представления:

@section Scripts {
    <script type="text/javascript">   
        $(function() {
            alert('');
        });
    </script>
}

Ответ 2

Например, в вашем _layout.cshtml:

@RenderSection("JavaScript", required: false)

И затем, на ваш взгляд:

    @section JavaScript
    {
       <script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")"></script>
       <script type="text/javascript" src="@Url.Content("/Scripts/AnotherScript.js")"></script>

       <script type="text/javascript">console.log("in the js");</script>
    }

Надеюсь, что поможет