如何为ajax.datatable列名称定义数据名称?我不断收到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",{ "data": "assignto",{ "data": "dateassign",{ "data": "jobaction",{ "data": "remarks",{ "data": "type",{ "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警告:表id = tblData-请求的第0行第0列的未知参数'jobnumber'。有关此错误的更多信息,请参见http://datatables.net/tn/4

我不断收到此错误,该如何解决?我可以获取数据注释,类型和分区,但无法获取其他数据。从头开始如何定义数据名称名称

解决方法

在模型/实体类中遵循区分大小写的列名。例如,

"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; }

}

结果:

enter image description here