在Scripts.Render之后,JQuery UI无法在MVC 4中运行?

时间:2013-03-20 21:19:17

标签: jquery asp.net-mvc-4

不确定这里有什么问题。我已经阅读了其他一些解决方案并尝试使用它们,但似乎没有任何工作。我想做的就是渲染一个日期选择器。我以前做了很多次,只是不确定我是否因为过去几周一直处于“紧缩”状态而出现脑功能障碍,或者是什么。

  1. 我有最新的JQuery(1.9.1),最新的JQuery UI(1.10.2)。
  2. 我查看过BundleConfig,一切顺利:

            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));
    
        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));
    
        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));
    
        // 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 StyleBundle("~/Content/css").Include("~/Content/site.css"));
    
        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"));
    
  3. 我已经设置了_Layout.cshtml标题:

        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
        @Scripts.Render("~/bundles/jquery")
        <script>
            $(function () {
                $("#datepicker").datepicker();
            });
        </script>
    
  4. 然后在正文中添加了另一个Scripts.Render(“〜/ bundles / jquery”)。然而,当我添加日期选择器时,没有任何反应......我只是得到一个文本框。

    我也尝试过:

    • 手动添加标题
    • 中的脚本引用
    • 添加jquery脚本引用,如jquery ui demo(url)中提供的那样
    没什么......我的意思是没有工作。我已经仔细检查了我的文件路径,它们是正确的......我错过了什么?!

2 个答案:

答案 0 :(得分:6)

我遇到了完全相同的问题,在我遇到这个解决方案之前一直弹跳:http://forums.asp.net/t/1879457.aspx

简而言之:

    应使用页面 head 中的@ Styles.Render呈现
  • 样式
  • 至少在我的代码中,只有jquery包被包含在页头中(使用@ Scripts.Render)。
  • 所有其他脚本(再次jquery,jquery UI等)应该使用页面正文中的@ Scripts.Render 在关闭正文标记之前...

页面以这样的代码结束:

     @Scripts.Render("~/bundles/jquery")
     @Scripts.Render("~/bundles/jqueryui")

     @Scripts.Render("~/bundles/jqueryval")
     @Scripts.Render("~/bundles/modernizr")
     @RenderSection("scripts", required: false)
 </body>

所以我得到了jquery IU工作!

答案 1 :(得分:1)

您为jQuery ui创建了一个包,但是您没有在页面中设置引用。在jQuery包引用之后和创建datepicker之前添加引用。 你有没有将datepicker设置为id或class?现在你将它设置为id。如果你给你的文本框一个datepicker类,请使用jQuery的类选择器。