对象不支持属性或方法“对话框”

参考AjaxControlToolkit ,我从MVC创建了一个UI对话框。

Layout.cshtml

  @ViewBag.Title - My ASP.NET MVC Application      @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")  

Index.cshtml

 

jQuery UI Hello World

You now have the power of ASP.NET, the simplicity of client-side scripting with jQuery, and the looks of jQuery UI. Congrats, web slinger!

$(function () { $('#dialog').dialog({ autoOpen: false, width: 600, buttons: { "Ok": function () { $(this).dialog("close"); }, "Cancel": function () { $(this).dialog("close"); } } }); $("#show-dialog").button().click(function () { $('#dialog').dialog('open'); return false; }); });

我在IE和Firefox中检查过。 Firefox抛出

Typeerror $(…)。对话框不是一个函数

IE抛出

对象不支持属性或方法“对话框”

有什么建议?

我想到的有三点可能值得检查:

  1. 永远不要在ASP.NET MVC应用程序中硬编码URL。 始终使用帮助程序(或推荐的程序包):

       @ViewBag.Title - My ASP.NET MVC Application      @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")  
  2. 确保在_Layout.cshtml的末尾没有@Scripts.Render("~/bundles/jquery")调用,因为这将包含两次jQuery。

  3. 如果在_Layout.cshtml的末尾有一个专用的部分用于自定义脚本,如@RenderSection("scripts", required: false) ,请确保已将自定义脚本放在该部分中(请注意,因为此RenderSection位于DOM的结尾你不需要将你的脚本包装在document.ready事件中,因为在它执行时,DOM已经被加载了):

     

    jQuery UI Hello World

    You now have the power of ASP.NET, the simplicity of client-side scripting with jQuery, and the looks of jQuery UI. Congrats, web slinger!

    @section scripts { }

在我的情况下,这个错误是因为我忘了添加jquery-ui文件引用:

   

当您忘记添加jquery-ui.js时,通常会发生这种情况。 包含jquery-ui-{version}.js的顺序也很重要!

你应该包括jquery-{version}.js然后jquery-ui-{version}.js 。 然后就在标记之前,包含您的自定义javascript文件。

它将解决Javascript运行时错误:[ 对象不支持属性或方法’对话’ ],[ ‘$’未定义 ]

你的代码对我来说似乎没问题。 您可以检查您的jQuery UI自定义是否包含对话框function(或尝试下载完整的jQuery UI以进行测试)并检查JS脚本的URI是否正确。

包括以下三行代码: