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

.NET MVC返回Json时DataTable遇Ajax错误(DateTime空值引发)

问题根源

你的Prog模型中Date字段用的是DateTime值类型,但SQL Server里的Date字段允许存储空值。当EF从数据库读取空Date值时,无法映射到非空的DateTime类型,导致查询抛出异常,后端返回的JSON格式错误,最终触发前端DataTable的Ajax错误。

解决步骤

1. 修正模型:使用可空DateTime类型

把模型里的Date字段改成可空的DateTime?,让EF能正确处理SQL中的空值:

[Required]
public string Name { get; set; }

public string Module { get; set; }

public string Product { get; set; }

public string Segment { get; set; }

// 改为可空类型,适配SQL的空Date值
public DateTime? Date { get; set; }

2. 优化JSON序列化(可选但推荐)

默认JSON序列化会把DateTime转成ISO格式,空值显示为null,可以自定义序列化规则统一日期格式,并处理空值:

控制器局部配置

修改GetAll方法,指定序列化选项:

[HttpGet]
public async Task<IActionResult> GetAll()
{
    var progs = await _db.Progs.ToListAsync();
    return Json(new { data = progs }, new JsonSerializerOptions
    {
        Converters = { new DateTimeConverter("yyyy-MM-dd") },
        IgnoreNullValues = false
    });
}

// 自定义日期转换器
public class DateTimeConverter : JsonConverter<DateTime?>
{
    private readonly string _format;

    public DateTimeConverter(string format)
    {
        _format = format;
    }

    public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        if (DateTime.TryParse(reader.GetString(), out DateTime date))
        {
            return date;
        }
        return null;
    }

    public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
    {
        writer.WriteStringValue(value?.ToString(_format) ?? string.Empty);
    }
}

全局配置(更高效)

如果多个接口需要处理日期,在Program.cs里全局配置JSON序列化:

builder.Services.AddControllersWithViews()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Converters.Add(new DateTimeConverter("yyyy-MM-dd"));
    });

3. 前端DataTable处理空值

在Date列的render函数里判断空值,避免显示异常:

{ 
    "data": "date", 
    "width": "20%",
    "render": function(data) {
        // 空值时显示"无"或空字符串,根据需求调整
        return data || "无";
    }
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:30:45