MVC4 частичный просмотр javascript bundling Issue

Я работаю над проектом ASP.net 4, MVC4 (RC), используя визуальную студию 11. Я пытаюсь отобразить представление Razor MVC4, которое отображает частичное представление. У меня есть некоторый javascript, необходимый для моего частичного просмотра. На моем частичном представлении, когда я включаю свой javascript внутри секции сценариев, как показано ниже, он, похоже, не загружается.

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

Если я удалю секцию сценариев, это не сработает, поскольку библиотеки jquery (которые связаны и отображаются на моей странице _Layout.cshtml) еще не загружены, когда выполняется код готового документа.

<script type="text/javascript">
    $(function () {
        alert("test");
    });
</script>

_Layout код страницы для загрузки jquery-библиотек

@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)

Кто-нибудь знает о решении для этого, или я просто делаю это неправильно? Это разрушает мою голову!

Ответ 1

Не переносите script в document.ready в частичном:

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

А, и не ставьте скрипты в частичные. Код Javascript должен быть помещен в отдельные файлы javascript. Если вы хотите выполнить некоторый javascript, когда частичный загружен, вы просто вытесняете этот script в повторно используемую функцию/плагин, который вы вызываете после того, как ваш частичный файл загружен.

Ответ 2

Наконец-то это заработало. Я удалил свой javascript из своего частичного представления и поместил его в родительском представлении (которое не является частичным) в разделе script. Этот раздел сценариев был создан автоматически при создании представления с помощью лесов (Create) и был помещен в конец страницы. Чтобы заставить это работать, мне пришлось переместить его в начало страницы - перед вызовом сделать частичный.

Ответ 3

ClientDependency решает именно эту проблему и позволяет добавлять ссылки script к частичным представлениям, которые свертываются и помещаются в конце страницы (или там, где вы указали) для вас. Он также занимается связыванием, версированием и минимизацией страниц за страницей.

Накладные расходы, связанные с обеспечением ссылки script на "родительском" представлении, а не на частичном, меня действительно не беспокоят, но клиентская зависимость может быть полезна, если у вас загружены частичные части, для которых требуются их собственные script и CSS.