jQuery后的ASP.NET MVC 4问题如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (60)

我刚刚创建了一个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的头部部分来纠正问题,jquery按预期工作。

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

提问于
用户回答回答于

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

可以通过在页面的多个部分添加警报来查看此信息。这就是为什么建议将js文件放在页面的后面。

你也可以通过在页面尾部添加一个页面脚本部分来补救你的问题。

这是一篇来自Scott Guthrie关于razor中的部分的文章:http : //weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor的.aspx

用户回答回答于

@Scripts.Render("~/bundles/jquery") 导致了MVC 4和VS 2010的问题。当你尝试创建jQuery对话框时,这个问题会变得更加明显。

正如JeffN825所说的,唯一的出路就是这个@Scripts.Render("~/bundles/jquery")

现在未知的是:评论的分歧是什么@Scripts.Render("~/bundles/jquery")

我正在使用以下jQuery库:

<script src="../../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.23.min.js" type="text/javascript"></script>

注意:jQuery-1.7.2.min.js将不起作用。

扫码关注云+社区

领取腾讯云代金券