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.