JQuery After Body ASP .NET MVC 4

标签 jquery asp.net-mvc 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>

这会导致错误

$ is not defined 

当然,尝试写

$(document).ready(function() {...}).

移动

@Scripts.Render("~/bundles/jquery")

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

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

最佳答案

脚本加载和执行会阻止页面的渲染。

您可以通过在页面的多个部分添加提醒来查看这一点。这就是为什么建议将js文件放在页面的后面。

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

编辑:这是 Scott Guthrie 撰写的一篇有关 razor 中各部分的文章:http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

关于JQuery After Body ASP .NET MVC 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11926405/

相关文章:

javascript - ajax 调用中的 C# MVC Razor 5 : location. href

asp.net-mvc - webapi MVC.net 中的异常处理

javascript - 从 Controller 返回多个 json 对象

asp.net-mvc-4 - MVC AD Azure 刷新 token 通过 ADAL JavaScript Ajax 和 KnockoutJs

jquery-mobile - jQueryMobile 数据绑定(bind)选项

javascript - 使用 Javascript/jQuery 基于当前页面和列表的动态面包屑 ()

javascript - 如何嵌套一组项目,将它们除以第一个值?

javascript - 从 JsonResult 返回字符串数组并在 JavaScript 中使用它

jquery - 你如何用 jquery 中的另一个标签替换 HTML 标签?

javascript - 如何在覆盖窗口关闭时将选定选项更改为特定值?