我应该在哪里将js脚本文件放在mvc应用程序中,以便jquery运行良好?

时间:2015-12-08 02:52:16

标签: asp.net-mvc-4

_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>

这里是video to show that click does not work

1 个答案:

答案 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,你应该没问题。