3

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

我一直在按照这里的教程在表格上实现拖放重新排序功能。

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

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

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

这是我尝试使用该方法的方式:

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

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

所以参考看起来很好,它绝对是最新的 JQuery UI 代码(我通过获取最新文件验证了这一点)所以我对这个有点迷惑。

4

1 回答 1

1

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

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

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

我也不明白的是,默认情况下,ASP.NET MVC 4 应用程序不会呈现 JQuery UI 框架,即使项目中存在文件并且在 BundleConfig.cs 文件中创建了脚本包。

因此,为了解决我的问题,我删除了所有手动引用,以便只呈现捆绑包,并添加以下行以在我的 _Layout.cshtml 文件的头部呈现 JQuery UI 代码:

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

包的工作方式是 Global.asax 文件调用 BundleConfig.cs 的“RegisterBundles”方法,该方法通过在“Scripts”文件夹中搜索相关的 JavaScript 文件以及您告诉它的任何其他位置来创建新的脚本包看。

然后,要从 HTML 加载脚本文件,您必须使用 @Script.Render() 渲染它们,并提供脚本包的名称作为参数(例如“~/bundles/jqueryui”)。

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

于 2013-04-24T14:57:57.280 回答