我收到' 未捕获的TypeError:undefined不是函数 '尝试在JQuery中调用自动完成功能时,我假设我的Scripts.Render位于错误的位置。 JQuery脚本应该放在layout.cshtml中的哪个位置?我的假设是在顶部,但无论我把它放在哪里,我似乎无法使它工作。
这是我的布局文件的顶部:
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Styles.Render("~/Content/themes/base/css")
</head>...
在底部我有这个:
...
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
在我的View文件底部,我有javascript:
@section scripts{
<script>
$(document).ready(function () {
$('#mpvalue').autocomplete({
source: '@Url.Action("MyMethod")'
});
});
</script>
}
我还在BundleConfig中进行了一些捆绑:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
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"));
// Use the development version of Modernizr to develop with and learn from. Then, when you're
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/respond.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css"));
从我在网上的其他帖子和示例中读到的内容来看,一切似乎都在正确的位置。
我在做什么来抛出&#39; 未捕获的TypeError:undefined不是函数 &#39;?
任何帮助将不胜感激
谢谢!
编辑:这是在ASP.NET MVC 5上运行
答案 0 :(得分:0)
根据经验,您可以在头部顶部定义所有@Styles.Render(...)
,在身体前定义所有@Scripts.Render(...)
。
他们会在其他地方工作,但是你会遇到不同类型的性能问题,或者只是像现在这样只是简单的重复声明。
在这种情况下,您确实有一个重复的modernizr声明。
如果此答案无法解决您的问题,请在页面底部提供相关生成的HTML(<script>
/ <style>
标记)以及控制台输出(它将告诉你这个错误来自哪些脚本。)