_layout.cshtml 有代码行

@Scripts.Render("~/bundles/jquery")
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")

默认情况下,它们被 MVC 放置在 <body> 标签内。但是当我将它们留在这个地方时,有时 jquery 不起作用。所以我决定把这三行放在 <head>_layout.cshtml 块中,这样页面就会把样式和脚本文件放在 <head> 中,就像任何人对 phpjsp 所做的那样。好消息是当我将这些文件放在 <head> 中时,我的所有 jquery 又开始工作了。但是大多数 MVC 书籍都说将脚本放在 <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>

这是 View :
@{
    ViewBag.Title = "TestPage";
}

<h2>TestPage</h2>

<input type="submit" name="name" value="Click me" id="btn"/>
<div id="d1"></div>

<script type="text/javascript">
    $('#btn').click(function(){

        alert('clicked');

    });
</script>

这是 video to show that click does not work

最佳答案

在您的布局文件中,用于加载 jQuery 库的脚本标记包含在页面的末尾。但是下面还有一个叫做 scripts 的部分。因此,在您的各个页面(例如:索引、 View 等)中,您应该将 javascript 放在部分脚本中

<body>
 @RenderBody()

 @Scripts.Render("~/bundles/jquery")
 @RenderSection("scripts", required: false)
</body>

并在您的 View 中(例如:索引 View )
@section scripts{

    <script src="~/Scripts/SomePageSpecificFile.js"></script>
    <script>
     $(function(){
        // Your other js code goes here
     });
   </script>

}

所以当 razor 渲染页面时,它将是
<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,您应该没问题。

关于asp.net-mvc-4 - 我应该将 js 脚本文件放在 mvc 应用程序中的什么位置,以便 jquery 运行良好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34147155/

10-13 05:53