Razor RenderSection внутри тегов скрипта - Как вставить скрипт из представления в функцию шаблона - PullRequest
36 голосов
/ 07 мая 2011

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

Я пробовал:

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

В моем мастере, а затем:

@section DocumentReady{
   alert('');
}

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

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

Спасибо.

Ответы [ 2 ]

77 голосов
/ 07 мая 2011

Вам не нужны одинарные кавычки вокруг вызова 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>
}
9 голосов
/ 28 августа 2013

Например, в вашем _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>
    }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...