В MVC5 Почему @Scripts.Render находится ниже стандарта @RenderBody в _Layout.cshtml

Когда я генерирую приложение _Layout.cshtml, в @Scripts.Render в конце файла после @RenderBody() _Layout.cshtml @Scripts.Render. Если я добавляю .js в мой index.cshtml, использующий jquery, я получаю страшную ошибку " $ is undefined".

Единственный известный мне способ это исправить - переместить @Scripts.Render в раздел <head>.

Какой правильный подход?

Заранее спасибо!

Ответ 1

@Scripts.Render должен находиться на внизу страницы. В противном случае у вас будут риски доступа к элементам страницы, которые не были загружены во время запуска скриптов.

EDIT:

Если вы хотите включить свои собственные файлы сценариев, есть два способа сделать это:

1. В BundleConfig.cs добавьте новый набор для ваших скриптов

 *bundles.Add(new ScriptBundle("~/bundles/UserScripts").Include("~/Scripts/MyScripts.js"));*

Далее, в _Layout.cshtml, отрисуйте пакет script после пакета jQuery:

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

    @* Render the custom bundles *@
    @Scripts.Render("~/bundles/UserScripts")

2. Или добавьте новый script раздел в файл Index.cshtml:

@section scripts {

    <script src="~/Scripts/MyScripts.js"></script>**

}