我已经看过:'$' is undefined,但它没有解决我的问题;这就是为什么我打开另一个线程。
这是我做过什么......
我创建使用Visual Studio 2012新的解决方案,并添加一个空的ASP.NET MVC 4项目。我添加了一个控制器类,定义了一个默认的Index动作方法,让Resharper为它创建视图。该项目具有以下结构:
root/
Controllers/
SampleController.cs
Models/
Views/
Sample/
Index.cshtml
Shared/
Layout.cshtml
Scripts/
jquery-2.0.1.js
jquery-2-0.1.min.js
jquery-2.0.1-min.map
jQuery已通过Nuget添加;所以我手动添加了一个BundleConfig.cs文件到App_Start文件夹并添加了代码来定义jQuery脚本包(RegisterBundles将由global.asax调用)。
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-2.0.*"));
}
我还定义了具有以下内容的页面布局......
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@this.ViewBag.Title</title>
</head>
<body>
<div>
@this.RenderBody()
</div>
@this.RenderSection("Scripts", required: false)
</body>
</html>
我的索引视图有以下内容...
@using System.Web.Optimization
@model dynamic
@{
this.Layout = "~/Views/Shared/Layout.cshtml";
}
@section Scripts
{
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
$(document).ready(function() {
});
</script>
}
下面的标记呈现到输出流...
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
</head>
<body>
<div>
</div>
<script src="/root/Scripts/jquery-2.0.1.js"></script>
<script src="/root/Scripts/jquery-2.0.1.min.map"></script>
<script type="text/javascript">
$(document).ready(function() {
});
</script>
</body>
</html>
当我调试应用程序时,它给了我错误消息'$'未定义。我没有在我的本地IIS中托管应用程序,而是试图通过Visual Studio的Web Development Server运行它,这给了我另一个提示:语法错误(min.map文件中的意外标记';')。可能是jQuery未初始化的原因......但我应该如何解决这个问题?
它通常有助于查看实际呈现给浏览器的内容:1)'@ Scripts.Render()'输出了什么? 2)如果是这样,脚本'src'是否指向一个服务jQuery的URL? –
是的,@ Scripts.Render输出所有的jQuery脚本文件。 – Matze
它可能呈现jQuery的多个副本(因为路径中的*)? –