JQuery UI sortable()方法不支持错误

时间:2013-04-23 19:25:32

标签: c# html asp.net-mvc jquery-ui asp.net-mvc-4

我正在开发一个ASP.NET MVC 4 Web应用程序,它利用最新的JQuery和JQuery UI库,并自动引用它们(在_Layout.cshtml页面中)。

我一直在关注教程here,以便在表上实现拖放重新排序功能。

但即使我在视图模型上明确地添加对最新JQuery UI文件的引用,例如,

<script src="/Scripts/jquery-ui-1.10.2.min.js" type="text/javascript"></script>

sortable()方法不起作用。它不会显示在Visual Studio intellisense中,并且在运行时不起作用。在Internet Explorer(或任何浏览器)上运行时,我只会收到一条错误消息,指出“对象不支持属性或方法'可排序'”。

以下是我尝试使用该方法的方法:

        <script type="text/javascript">
        $(document).ready(function()
        {
            $("#clueTable tbody").sortable();
        });
        </script>

我注意到Intellisense有一个属性'sortables'和'sort',它从JQuery UI文件中找到,但不是'sortable'。

所以引用似乎很好,它肯定是最新的JQuery UI代码(我通过获取最新文件验证了这一点)所以我对这个有点神秘。

1 个答案:

答案 0 :(得分:1)

在_Layout.cshtml中,我似乎在某些时候手动引用了JQuery和JQuery UI脚本,忘记了脚本已经在包中呈现,例如

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

我正确地引用了正确的脚本,但因为它们被再次加载,我认为它们正在破坏文件的第一个实例,包括依赖于正在加载的JQuery文件的JQuery UI代码。

我不&#39是什么;吨也明白的是,在默认情况下,ASP.NET MVC 4应用程序不会使JQuery的UI框架,即使在项目中存在的文件,并在BundleConfig.cs创建一个脚本包文件。

因此,要解决的问题我的,我删除所有手动的引用,以便只有束而被呈现,并加入以下行来呈现在我_Layout.cshtml文件的开头的JQuery的UI代码:

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

捆绑包的工作方式是Global.asax文件调用&#39; RegisterBundles&#39; BundleConfig.cs的方法,它通过在&#39; Scripts&#39;中搜索相关的JavaScript文件来创建新的脚本包。文件夹以及您告诉它的其他任何地方。

然后,以加载来自HTML脚本文件,必须使用@ Script.Render(),并提供脚本束的名称作为参数(例如&#34,以使它们;〜/束/ jQueryUI的&# 34)。

要在网站的每个页面上呈现所有脚本,您可以将其添加到_Layout.cshtml文件中,该文件应用于每个页面。