2013-07-30 3 views
2

Я использую ASP.NET MVC4 ... Из коробки _Layout.cshtml имееткак использовать Jquery скрипт в представлении MVC4

@Scripts.Render("~/bundles/jquery") 

в нем. Также у меня есть запас BundleConfig.cs, у которого есть

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js")); 

В нем. У меня есть блок сценариев, подобный этому в моем Index.cshtml, который является просто нормальным представлением.

<script src="@Url.Content("~/Scripts/ProductsIndex.js")" type="text/javascript"></script> 

Но JQuery в этом сценарии не запускается ... Однако, если я ставлю следующую строку в моей Index.cshtml, (справа рядом с ссылкой сценария ProductsIndex.js), то JQuery работает нормально.

<script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript">   </script> 

Я знаю, что это что-то простое, но, учитывая, что _Layout.cshtml уже ссылается на библиотеку JQuery, я не должен быть в состоянии использовать JQuery без необходимости снова добавить его к моему Index.cshtml явно?

+0

Проверьте полученный HTML (источник просмотра), чтобы убедиться, что jquery загружен перед вашим 'ProductsIndex.js'. – Jasen

ответ

0

Вы можете просто поместить фактическое имя файла в расслоении конфигурации для запроса и удалить токенизированную версию:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
       "~/Scripts/jquery-1.8.2.min.js")); 

Если вы не разрабатываете свое приложение в режиме выпуска (или иметь <compilation debug="true" /> в вашем web.config), то существующая конфигурация связки может не найти вашу мини-версию (.min.js) jQuery.

Ознакомьтесь с функцией связывания и о том, как она автоматически переключается между неограниченными и уменьшенными версиями сценариев на основе конфигурации сборки here.

+0

То, что вы говорите о значении конфигурации debug и с использованием мини-версии, верно ... но это не исправить мою проблему. – tjp69

1

Для меня проблема заключалась в перемещении оператора @ Scripts.Render ("~/bundles/jquery") из нижней части _Layout.cshtml в начало. По умолчанию Microsoft помещает этот оператор рендеринга ниже нижнего колонтитула. Я переместил его в раздел вместе с @ Scripts.Render («~/bundles/modernizr»), а затем начал работать скрипт в моем index.cshtml.

По-видимому, проблема заключалась в том, что когда мой скрипт внутри index.cshtml пытался выполнить, JQuery еще не был загружен, потому что он находился внизу страницы.

+0

. Вы должны поместить свои скрипты в блок сценариев @region {}, чтобы гарантировать, что они всегда загружаются после того, как требуемые библиотеки загружены. –

Смежные вопросы