Я создал MVC 4 с использованием шаблона по умолчанию, где @Script.Render(~"bundles/jquery")
вызывается после @RenderBody()
. Согласно сообщению this, это рекомендуемый порядок выполнения, чтобы предотвратить загрузку скриптов для блокировки рендеринга страницы.
Я хочу добавить небольшой вызов jQuery в моем представлении или мой раздел RenderBody()
. Похоже на это, в верхней части моего представления:
<script type="text/javascript">
$(document).ready(function()
{
$("#eta_table").tablesorter({
headers: {
0: { sorter: false }
}
});
});
Однако это всегда будет вызывать ошибку Error: '$' is undefined
, потому что jQuery не загружается до тех пор, пока не будет RenderBody()
.
Я не могу себе представить, что это новая проблема, это похоже на довольно распространенную задачу... Любые предложения о том, как это следует обрабатывать?
Для справки, здесь загружается jQuery:
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
Edit
В итоге я переместил script в файл scripts.js и загрузил его ниже jQuery на странице макета, например:
bundles.Add(new ScriptBundle("~/bundles/custom").Include(
"~/Scripts/Custom/tablesorter.js",
"~/Scripts/Custom/scripts.js"));
И HTML:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/custom")
@RenderSection("scripts", required: false)
</body>
За исключением этого все еще кажется неправильным, так как теперь скрипты должны загружаться для каждой страницы, использующей представление макета макета. Он работает, но, это лучший способ?