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

.NET Core MVC中Datatable绑定JSON数据显示空行求助

问题排查与解决方案

一、控制器代码核心问题

你的控制器代码存在实例初始化错误的严重问题:

TestInfo test = JsonConvert.DeserializeObject<TestInfo>(json);

这里的json变量完全未定义,直接反序列化会导致test对象为空甚至抛出异常。正确的做法是直接初始化TestInfo并创建Data集合实例:

public JsonResult Get_list(long? subject_id)
{
    DataTable dt = ExamDA.GetTestBySubjectId((long)subject_id, GetString());
    // 正确初始化TestInfo和Data集合
    TestInfo test = new TestInfo 
    { 
        Data = new List<TestData>() 
    };

    foreach (DataRow dr in dt.Rows)
    {
        test.Data.Add(new TestData()
        {
            Id = Convert.ToInt32(dr["Id"]),
            Name = dr["Name"].ToString(),
            DifficultyLevel = dr["DifficultyLevel"].ToString(),
            CorrectMarks = Convert.ToDecimal(dr["CorrectMarks"]),
            WrongMarks = Convert.ToDecimal(dr["WrongMarks"]),
            strStartDate = dr["StartDate"].ToString(),
            strEndDate = dr["EndDate"].ToString(),
        });
    }

    return Json(test);
}

同时要确保TestInfo和TestData类的属性均为public修饰符,否则JSON序列化时会忽略这些字段。

二、Datatable配置错误

你的列配置存在两个关键问题:

  1. data值未加引号:JS中{ "data": Id }会把Id当作变量而非字符串字段名,导致无法匹配返回的JSON字段。
  2. 未指定数据来源:控制器返回的是包含Data数组的TestInfo对象,需要明确告诉Datatable从Data属性读取数据。

修正后的Datatable配置:

$(document).ready(function() {
    $('#yourTableId').DataTable({
        ajax: {
            url: '/YourController/Get_list', // 替换为实际控制器路由
            type: 'GET',
            data: function(d) {
                d.subject_id = 123; // 替换为实际的subject_id参数值
            },
            dataSrc: 'Data' // 指定从返回JSON的Data属性取数据
        },
        columns: [
            { "data": "Id" },
            { "data": "Name" },
            { "data": "DifficultyLevel" },
            { "data": "CorrectMarks" },
            { "data": "WrongMarks" }
        ]
    });
});

三、额外排查步骤

  1. 查看网络请求:在浏览器开发者工具的「网络」标签,检查接口返回的JSON结构是否正确,确认Data数组包含数据,且字段名与列配置完全一致(注意大小写敏感)。
  2. 检查控制台错误:查看浏览器控制台是否存在JS语法错误或数据匹配报错,比如字段未找到的提示。
  3. 验证序列化结果:可在控制器中临时将JSON输出到日志,确认序列化后的结构符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:44:57