首页 > 解决方案 > 即使数据同时存在大写和小写尝试,json 中也无法识别列

问题描述

好吧很奇怪我得到一个无效的列,即使它在我的 json 代码中,我已经尝试了大写和小写版本,但仍然是同样的错误,是因为我的日期是 utc 格式的 json 吗?

[HttpGet]
public IActionResult  GetAuditTrailData() {
    int test = 7;
    var auditTrailsHistory = _context.MisAuditTrail.Where(w => w.isActive == true && w.isDeleted == false && w.MISObjectId==test).ToList();
    string output = JsonConvert.SerializeObject(auditTrailsHistory);
    return Json(new { data = auditTrailsHistory });
}

阿贾克斯调用

$(document).ready(function () {
    $("#audTrailTable").DataTable({
        "ajax": {
            url: "/MISObjects/GetAuditTrailData/",
            type: "get",
            database: "json"
        },
        "columns": [
            { "data": "createddate" },
            { "data": "createdby" },
            { "data": "action" }

        ],
        "scrollY": "200px",
        "scrollCollapse": true,
        "paging": false,
        "processing": true, // for show progress bar
        "serverSide": true, // for process server side
        "filter": true, // this is for disable filter (search box)
        "orderMulti": false // for disable multiple column at once
    })
});

json

"创建案例","CreatedDate":"2020-07-28T20:59:54.2791487+01:00","CreatedBy":"David","isActive":true,"isDeleted":false},{"AuditTrailType" :0,"Id":5,"IPAddressBytes":"","TennantId":"92b4ebe2-c81e-4fbf-91d0-9b422a7843c4","AuditType":0,"MISObjectId":7,"Action":"David做了一些测试”

错误

在此处输入图像描述

标签: c#twitter-bootstrapasp.net-core

解决方案


根据你提供的json格式,很混乱,格式有一定的问题。

请确保您返回的 json 数组中的字段名称与 DataTable 方法中列的名称和顺序一致。

这是一个完整的演示供您参考:

       public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult GetAuditTrailData()
        {
            int test = 7;
            var auditTrailsHistory = _context.MisAuditTrail.Where(w => w.isActive == true && w.isDeleted == false && w.MISObjectId == test).ToList();
            //string output = JsonConvert.SerializeObject(auditTrailsHistory);
            return Json(new { data = auditTrailsHistory });
        }

这是要返回的正确 json 格式(为简洁起见,我只传递了三个必填字段):

{"data":[{"action":"David did some tests","createdby":"David","createddate":"2020-07-29T03:59:54.2791487"},{"action":"Jack did some tests","createdby":"Jack","createddate":"2020-07-29T03:59:54.2791487"}]}

指数 :

<div class="card-body">
    <table id="audTrailTable" class="table table-bordered table-striped">
        <thead>
            <tr>
                <th>action</th>
                <th>createdby</th>
                <th>createddate</th>
            </tr>
        </thead>
    </table>
</div>

@section Scripts{

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
    <link href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#audTrailTable").DataTable({
                "ajax": {
                    url: "/MISObjects/GetAuditTrailData/",
                    type: "post",
                    database: "json"
                },
                "columns": [
                    { "data": "action" },
                    { "data": "createdby" },
                    {
                        "data": "createddate",
                        render: function (data, type, row) {
                            if (type === "sort" || type === "type") {
                                return data;
                            }
                            //here you can convert date to any format you want to show
                            return moment(data).format("MM-DD-YYYY HH:mm:ss");
                        }
                    }
                ],
                "scrollY": "200px",
                "scrollCollapse": true,
                "paging": false,
                "processing": true, // for show progress bar
                "serverSide": true, // for process server side
                "filter": true, // this is for disable filter (search box)
                "orderMulti": false // for disable multiple column at once
            })
        });
                     
    </script>
}

这是测试结果:

在此处输入图像描述


推荐阅读