You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:C# DataTable转JSON后在jQuery DataTable无法正常显示

嘿,作为曾经踩过jQuery DataTable不少坑的过来人,我来帮你梳理下问题所在~首先先把你给出的代码整理清楚,然后一步步排查:

你的现有代码整理

HTML部分:

<body>
  <div class="container">
    <table id="MydataTableDiv">
      <thead>
        <tr>
          <th>NAME</th>
          <th>MARKS</th>
        </tr>
      </thead>
    </table>
  </div>
</body>

未完成的脚本部分:

$(document).ready(function () {
  $("#MydataTableDiv").DataTable({
    serverSide: true,
    processing: ... // 这里你没写完参数
    // 缺少关键的数据源配置和列映射
  });
});

核心问题&解决步骤

1. 补全DataTable的必要配置

你开启了serverSide: true,这意味着DataTable会通过AJAX从后端请求数据,但你没指定数据源地址和字段映射,这是最关键的缺失项。修正后的脚本应该是这样:

$(document).ready(function () {
  $("#MydataTableDiv").DataTable({
    serverSide: true,
    processing: true, // 补全为true,显示加载中的提示动画
    ajax: {
      url: "/你的控制器/获取数据的方法", // 替换成你后端提供数据的接口地址
      type: "POST", // 或者GET,取决于你后端接口的请求方式
      dataType: "json"
    },
    columns: [
      { data: "NAME" }, // 要和后端返回JSON里的字段名完全对应
      { data: "MARKS" }
    ]
  });
});

2. 确保C#生成的JSON符合DataTable要求

当开启serverSide: true时,DataTable要求后端返回的JSON必须包含以下4个核心字段,不然无法解析:

  • draw: 对应前端请求的序号(前端会自动传这个参数,后端要原封不动返回)
  • recordsTotal: 总记录数(未过滤前的总数)
  • recordsFiltered: 过滤后的记录数(如果没有过滤逻辑,就等于recordsTotal)
  • data: 实际的表格数据数组

C#端生成正确JSON的示例(用Newtonsoft.Json库):

// 假设你已经从数据库拿到了DataTable dt
var response = new {
    draw = Request.Form["draw"], // 获取前端传的draw参数
    recordsTotal = dt.Rows.Count,
    recordsFiltered = dt.Rows.Count,
    data = dt.AsEnumerable().Select(row => new {
        NAME = row["NAME"].ToString(),
        MARKS = row["MARKS"].ToString()
    })
};
// 序列化为JSON返回
return Json(response, JsonRequestBehavior.AllowGet);

3. 可选:如果数据量小,关闭serverSide模式

如果你的数据量不大(比如几百条以内),完全可以关闭serverSide: true,直接把C#生成的数据传给DataTable,这样更简单:

// 先把C#生成的JSON直接输出到页面(用Razor语法)
var tableData = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(dt));

$(document).ready(function () {
  $("#MydataTableDiv").DataTable({
    processing: true,
    data: tableData,
    columns: [
      { data: "NAME" },
      { data: "MARKS" }
    ]
  });
});

排查小技巧

  • 打开浏览器的开发者工具控制台,看看有没有AJAX请求失败(比如404错误)、JSON解析错误,这些能快速定位问题。
  • 检查后端返回的JSON结构,确保字段名和前端columns里的data参数完全一致(大小写敏感!)。

内容的提问来源于stack exchange,提问作者Rahul Chaudhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:33:27