C# 在布局中的脚本之前加载MVC渲染节
我的javascript文件的加载顺序似乎有一些问题。在my_Layout.cshtml中,我引用JQuery,然后创建脚本部分C# 在布局中的脚本之前加载MVC渲染节,c#,jquery,asp.net-mvc,asp.net-mvc-4,C#,Jquery,Asp.net Mvc,Asp.net Mvc 4,我的javascript文件的加载顺序似乎有一些问题。在my_Layout.cshtml中,我引用JQuery,然后创建脚本部分 <script src="~/Scripts/jquery-1.10.2.min.js"></script> <script src="~/Scripts/bootstrap.min.js"></script> <script src="http://ajax.aspnetcdn.com/ajax/knockout
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-3.1.0.js"></script>
@RenderSection("Script", false)
但是,当页面加载时,我会出现以下错误:
Uncaught ReferenceError: $ is not defined
我的理解是相当有限的,但是,我认为它在加载单个视图之前已经加载了jQuery库。任何帮助都将不胜感激。因为您对“myScript.js”的引用不在脚本部分,它们将在页面中呈现,只要它们与您的视图内联。如果它们位于视图的顶部,则它们将在您调用RenderBody()的点在布局中渲染。如果在布局的底部加载脚本,那么jQuery和所有其他脚本将不会在加载myScripts.js文件时加载,因此“$”将未定义
尝试将myScripts.js引用移动到脚本部分中
@section Script {
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="~/Scripts/myScripts.js"></script>
<script>
var options = {
lineGraphData: @Html.Raw(Model.LineGraphJson),
}
var viewModel = init(options);
ko.applyBindings(viewModel);
</script>
}
@节脚本{
变量选项={
lineGraphData:@Html.Raw(Model.LineGraphJson),
}
var viewModel=init(选项);
应用绑定(视图模型);
}
由于您对“myScript.js”的引用不在脚本部分,因此它们将在页面中呈现,只要它们与您的视图内联。如果它们位于视图的顶部,则它们将在您调用RenderBody()的点在布局中渲染。如果在布局的底部加载脚本,那么jQuery和所有其他脚本将不会在加载myScripts.js文件时加载,因此“$”将未定义
尝试将myScripts.js引用移动到脚本部分中
@section Script {
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="~/Scripts/myScripts.js"></script>
<script>
var options = {
lineGraphData: @Html.Raw(Model.LineGraphJson),
}
var viewModel = init(options);
ko.applyBindings(viewModel);
</script>
}
@节脚本{
变量选项={
lineGraphData:@Html.Raw(Model.LineGraphJson),
}
var viewModel=init(选项);
应用绑定(视图模型);
}
每当我看到错误时
Uncaught ReferenceError: $ is not defined
这是因为我试图在没有正确引用jQuery库的地方使用jQuery
我最近没有经常使用jQuery,所以这样想可能是不正确的,但我相信错误告诉您,您没有在myScripts.js文件中引用jQuery库
我个人也会尝试将jQuery引用添加到myScript.js文件中,如下所示
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
$('.update-linegraph').on('click', function () {
UpdateLineGraph();
});
</script>
$('.update linegraph')。在('单击',函数(){
UpdateLineGraph();
});
每当我看到错误时
Uncaught ReferenceError: $ is not defined
这是因为我试图在没有正确引用jQuery库的地方使用jQuery
我最近没有经常使用jQuery,所以这样想可能是不正确的,但我相信错误告诉您,您没有在myScripts.js文件中引用jQuery库
我个人也会尝试将jQuery引用添加到myScript.js文件中,如下所示
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
$('.update-linegraph').on('click', function () {
UpdateLineGraph();
});
</script>
$('.update linegraph')。在('单击',函数(){
UpdateLineGraph();
});
我遇到了类似的问题,在\u Layout.cshtml
中的所有脚本最后都被加载,这导致$Jquery未定义
错误。所以,我要做的是:
只需在\u Layout.cshtml
在那之后,它工作得非常好
我遇到了类似的问题,\u Layout.cshtml
中的所有脚本最后都被加载,这导致了$Jquery未定义
错误。所以,我要做的是:
只需在\u Layout.cshtml
在那之后,它工作得非常好
或者,我发现Microsoft使用的MVC模板在布局页面的底部包含jQuery,因此内容页面在加载到页面之前尝试引用jQuery。是的,我使用MVC越多,就越经常注意到这种情况。或者,我发现Microsoft使用的MVC模板在布局页面的底部包含jQuery,因此内容页面在加载到页面之前尝试引用jQuery。是的,我使用MVC越多,就越经常注意到这种情况。小更正:该部分是脚本,不Script
节名是您选择的名称。在OP的例子中,他们将其称为“Script”(单数),如第一个代码片段的@RenderSection(“Script”,false)
行中所定义。您是正确的。MVC默认有脚本部分,但OP正在定义自己的部分。次要更正:部分是Scripts
,而不是Script
。部分名称是您选择的名称。在OP的例子中,他们将其称为“Script”(单数),如第一个代码片段的@RenderSection(“Script”,false)
行中所定义。您是正确的。MVC默认有脚本部分,但OP定义了自己的部分。