如何为ajax.datatable列名定义数据的名称?我不断收到 ajax.datatable 的未知参数错误

How to define the name of the data for the ajax.datatable column name? I keep getting the unknow parameter error for ajax.datatable

JobProg.js

var dataTable;

$(document).ready(function () {
   loadDataTable();
});

function loadDataTable() {
    dataTable = $('#tblData').DataTable({
        "ajax": {
            "url": "/Admin/CMJobProg/GetAll"
        },
        "columns": [
            { "data": "jobnumber", "width": "35%" },
            { "data": "assignfrom",  "width": "35%" },
            { "data": "assignto",  "width": "35%" },
            { "data": "dateassign",  "width": "35%" },
            { "data": "jobaction",  "width": "35%" },
            { "data": "remarks", "width": "35%" },
            { "data": "type", "width": "35%" },
            { "data": "division" ,"width": "35%" }
                
        ]

    })
}

CMJobProg.cs

namespace LXG.Models
{
    [Table("CMJOBPROG", Schema = "LASIS")]
    public class CMJobProg
    {
        [Required]
        [MaxLength(8)]
        [Display(Name = "Job Number")]
        [Column("JOB_NUMBER")]
        public string JobNumber { get; set; }

        [Display(Name = "Assign From")]
        [MaxLength(22)]
        [Column("ASSIGN_FROM")]
        public string AssignFrom { get; set; }

        [Display(Name = "Assign To")]
        [MaxLength(22)]
        [Column("ASSIGN_TO")]
        public string AssignTo { get; set; }

        [Column("DATE_ASSIGN")]
        public DateTime DateAssign { get; set; }

        [Display(Name = "Job Action")]
        [Range(0, 999)]
        [Column("JOB_ACTION")]
        public int? JobAction { get; set; }

        [Display(Name = "Remarks")]
        [MaxLength(500)]
        [Column("REMARKS")]
        public string Remarks { get; set; }

        [Display(Name = "Job Type")]
        [Required]
        [MaxLength(2)]
        [Column("TYPE")]
        public string Type { get; set; }

        [MaxLength(2)]
        [Column("DIVISION")]
        public string Division { get; set; }

        
    }
}

DataTables 警告:table id=tblData - 为第 0 行第 0 列请求了未知参数 'jobnumber'。有关此错误的详细信息,请参阅 http://datatables.net/tn/4

我一直收到这个错误,如何解决?我能得到数据的备注、类型和划分,但我不能得到其他数据。究竟如何为数据名称定义名称?

关注 model/entity class 中的 case-sensitive 列名称。例如,

"data": "jobnumber"

"data": "JobNumber"

在 Startup.cs

中添加这个“AddNewtonsoftJson”
services.AddControllersWithViews().AddRazorRuntimeCompilation().AddNewtonsoftJson(options =>
{
    options.SerializerSettings.ContractResolver = new DefaultContractResolver();
    options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});

据我所知,asp.net 核心返回 json 将有一个特殊的格式。像这样:JobNumber 到 jobNumber。解决这个问题。我建议您可以为每个模型设置一个 JsonPropertyName 属性 属性.

更多详情,您可以参考以下代码:

[Table("CMJOBPROG", Schema = "LASIS")]
public class CMJobProgress
{
    [Required]
    [MaxLength(8)]
    [Display(Name = "Job Number")]
    [Column("JOB_NUMBER")]
    [JsonPropertyName("jobnumber")]
    public string JobNumber { get; set; }

    [Display(Name = "Assign From")]
    [MaxLength(22)]
    [Column("ASSIGN_FROM")]
    [JsonPropertyName("assignfrom")]
    public string AssignFrom { get; set; }

    [Display(Name = "Assign To")]
    [MaxLength(22)]
    [Column("ASSIGN_TO")]
    [JsonPropertyName("assignto")]
    public string AssignTo { get; set; }

    [Column("DATE_ASSIGN")]
    [JsonPropertyName("dateassign")]
    public DateTime DateAssign { get; set; }

    [Display(Name = "Job Action")]
    [Range(0, 999)]
    [Column("JOB_ACTION")]
    [JsonPropertyName("jobaction")]
    public string JobAction { get; set; }

    [Display(Name = "Remarks")]
    [MaxLength(500)]
    [Column("REMARKS")]
    [JsonPropertyName("remarks")]
    public string Remarks { get; set; }

    [Display(Name = "Job Type")]
    [Required]
    [MaxLength(2)]
    [Column("TYPE")]
    [JsonPropertyName("type")]
    public string Type { get; set; }

    [MaxLength(2)]
    [Column("DIVISION")]
    [JsonPropertyName("division")]
    public string Division { get; set; }

}

结果: