首页 > 解决方案 > 在一个项目中初始化多个 DataTable 对象

问题描述

在 ASP.NET Core MVC 项目中,我对对象使用多个视图JQuery's DataTables。以前,所有这些表都是在每个视图下方使用一点 javascript 初始化的(此代码位于 10-15 个视图的底部):

<script>
    $(document).ready(function () {
        $('#table').DataTable();
    });
</script>

现在,我们想更改整个项目的一些设置,所以我想摆脱所有单独的代码片段并从一个 javascript 初始化 DataTable 对象。我想出了一个解决方案,但我想知道这是否是最好的方法,如果不是,最佳实践包括什么。

我创建了一个小的 javascript 文件,该文件加载到我的_layout.chshtml文件中,它检查是否存在 html 表格元素(由 .net core mvc 中的剃刀化妆自动生成):

$(document).ready(function () {
      // This snippet checks whether the html of a view contains
      // a #table element (id tag).
      if ($('#table').length) {
        $('#table').DataTable({
          "pageLength": 50 
          // other settings
        });
      }
    });

这是这样做的正确方法吗?

谢谢你的帮助!

标签: javascriptc#datatablesasp.net-core-mvc

解决方案


我认为你这样做的方式是正确的,但首先
你应该考虑你是否在所有页面中都需要这个?因为将它添加到您的布局页面,每次请求任何页面时都会加载它,这会为您的页面增加至少 100kb-1MB。

其次,您不需要if($(..).length)JQuery 会自动执行此操作

我对这种情况的建议是首先使用一个类而不是一个 ID,然后将您的 JS 代码放在布局页面中,但不要在此处加载您的脚本,将它们加载到在那里使用它们的页面上,然后在初始化之前检查 DataTable 是否是加载与否。


推荐阅读