_layout.cshtml包含代码行
@Scripts.Render("~/bundles/jquery")
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
默认情况下,它们被MVC置于<body>
标记内。但是,当我将它们留在这个地方时,有时jquery
不起作用。所以我决定将这三行放在<head>
的{{1}}块中,这样页面就会将样式和脚本文件放在_layout.cshtml
中,就像任何人对<head>
一样。 php
。好的是,当我将这些文件放入jsp
时,我<head>
的所有文件都重新开始工作。但大多数MVC书籍都说要将脚本放在jquery
块中。
那我应该把它们放在哪里?
更新帖子:
这是我的捆绑文件:
<body>
这是布局文件:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
}
以下是观点:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
</head>
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/modernizr")
@RenderSection("scripts", required: false)
</body>
</html>
答案 0 :(得分:6)
在您的布局文件中,加载jQuery库的脚本标记包含在页面末尾。但是下面还有另一个名为scripts
的部分。所以在你的个人页面中(例如:索引,视图等)。你应该把你的javascript放在部分脚本
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
在你的观点中(例如:索引视图)
@section scripts{
<script src="~/Scripts/SomePageSpecificFile.js"></script>
<script>
$(function(){
// Your other js code goes here
});
</script>
}
因此,当剃刀呈现页面时,它将是
<body>
<script src="/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/SomePageSpecificFile.js"></script>
<script>
$(function(){
// Your other js code goes here
});
</script>
</body>
只要你在scripts
部分执行使用jQuery的页面特定的javascript,你应该没问题。