不知道在哪里放置Scripts.Render for JQuery

时间:2015-03-15 14:41:25

标签: jquery asp.net-mvc asp.net-mvc-5

我收到' 未捕获的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上运行

1 个答案:

答案 0 :(得分:0)

根据经验,您可以在头部顶部定义所有@Styles.Render(...),在身体前定义所有@Scripts.Render(...)

他们会在其他地方工作,但是你会遇到不同类型的性能问题,或者只是像现在这样只是简单的重复声明。

在这种情况下,您确实有一个重复的声明。

如果此答案无法解决您的问题,请在页面底部提供相关生成的HTML(<script> / <style>标记)以及控制台输出(它将告诉你这个错误来自哪些脚本。)