JQuery After Body ASP .NET MVC 4

Jef*_*eff 18 asp.net-mvc jquery asp.net-mvc-4

我刚刚创建了一个ASP .NET MVC 4 WebAPI项目.

在查看默认的_Layout.cshtml时,我看到在渲染正文(不在头部)之后插入了jquery脚本.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/themes/base/css", "~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    @RenderSection("scripts", required: false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这会导致错误

$ is not defined 
Run Code Online (Sandbox Code Playgroud)

当然,试着写

$(document).ready(function() {...}).
Run Code Online (Sandbox Code Playgroud)

移动

@Scripts.Render("~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)

进入_Layout.cshtml的head部分纠正问题,jquery按预期工作.

这是怎么回事?我做错了什么,并且_Layout.cshtml中的Script.Render的默认位置是有原因的吗?

lin*_*rro 11

脚本加载和执行阻止页面的呈现.

您可以通过在页面的多个部分添加提醒来查看此信息.这就是为什么建议将js文件放在页面后面的原因.

您还可以通过在页面末尾添加jquery的页面后面的页面脚本部分来解决您的问题.

编辑:以下是Scott Guthrie关于剃刀部分的文章:http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor的.aspx