【发布时间】:2013-04-21 02:11:17
【问题描述】:
我有一个带有简单表格的 index.cshtml 文件。我下载了 dataTable 插件的 css 文件和 min js 文件。我在 BundleConfig.cs 中放了以下代码:
bundles.Add(new ScriptBundle("~/bundles/table").Include(
"~/Scripts/jquery.dataTables.min.js"));
bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
"~/Content/themes/base/jquery.ui.core.css",
"~/Content/themes/base/jquery.ui.resizable.css",
"~/Content/themes/base/jquery.ui.selectable.css",
"~/Content/themes/base/jquery.ui.accordion.css",
"~/Content/themes/base/jquery.ui.autocomplete.css",
"~/Content/themes/base/jquery.ui.button.css",
"~/Content/themes/base/jquery.ui.dialog.css",
"~/Content/themes/base/jquery.ui.slider.css",
"~/Content/themes/base/jquery.ui.tabs.css",
"~/Content/themes/base/jquery.ui.datepicker.css",
"~/Content/themes/base/jquery.ui.progressbar.css",
"~/Content/themes/base/jquery.ui.theme.css",
"~/Content/themes/base/jquery.dataTables.css"));
}
在我的 _Layout.cshtml 中,我有这个:
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/table")
最后,在我的 index.cshtml 中,我将以下代码放在我的表格上方:
<script type="text/javascript">
$(document).ready(function () {
$('#patients').dataTable();
});
</script>
我注意到当我运行带有表格的页面并查看源代码时,我看到底部的 jquery 文件和顶部的脚本,所以我收到错误:
Uncaught ReferenceError: $ is not defined
BundleConfig 是添加新 js 和 css 文件的正确位置吗?如果我不希望它在那里,我该怎么做?为什么jquery脚本在页面底部运行?
我在 _Layout.cshtml 中添加了以下内容:
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/table")
但现在我收到此错误:
Uncaught TypeError: Object [object Object] has no method 'dataTable'
当我查看源代码时,我看到 dataTables.min.js 不存在,但我已将其包含在 bundles/table 中。
【问题讨论】:
-
在调用datatables之前有没有调用jquery.js?
-
好吧,当我查看源代码时,我的脚本在 jquery 之前被调用,所以我知道它为什么未定义,但我认为 Modernizer 会在我的脚本之前运行 jquery,因为它包含在 _layout 中。 cshtml 文件。
-
你在页面的什么地方包含了 jQuery?
-
我认为 Modernizer 包含它,它在我的 _Layout.cshtml 中调用。
-
我将它添加到我的 _layout.cshtml 中,但现在又出现了一个错误。
标签: jquery asp.net-mvc jquery-datatables