【问题标题】:jquery datatable server side processing .net Corejquery数据表服务器端处理.net Core
【发布时间】:2019-03-21 18:03:30
【问题描述】:

我正在使用带有 .net 核心的 jquery 数据表来构建网格 我正在使用服务器端处理 我正在使用这个包GitHub Link

我得到第 0 行第 0 列的请求未知参数“CivilID”的问题

客户端

var table = $('#tblClient').DataTable({
    language: {
        processing: "Loading Data...",
        zeroRecords: "No matching records found"
    },
    processing: true,
    serverSide: true,
    orderCellsTop: true,
    autoWidth: true,
    deferRender: true,
    dom: '<tr>',
    ajax: {
        type: "POST",
        url: '/Client/LoadTable/',
        contentType: "application/json; charset=utf-8",
        async: true,

        data: function(data) {
            let additionalValues = [];
            additionalValues[0] = "Additional Parameters 1";
            additionalValues[1] = "Additional Parameters 2";
            data.AdditionalValues = additionalValues;
            return JSON.stringify(data);
        }
    },

    columns: [
        {
            title: "CivilID",
            data: "CivilID",
        },
        {
            title: "LastName",
            data: "LastName"
        }, {
            title: "FirstName",
            data: "FirstName"
        }
    ]
});

服务器端

public async Task<IActionResult> LoadTable([FromBody]DTParameters param) {
    try {
        // var data = await _demoService.GetDataAsync(param);
        List<ClientViewModel> ClientsList = new List<ClientViewModel>();

        var result = HttpContext.Session.GetString("AllClients");
        ClientsList = JsonConvert.DeserializeObject<List<ClientViewModel>>(result);

        var json= new JsonResult(new DTResult<ClientViewModel> {
            draw = param.Draw,
            data = ClientsList,
            recordsFiltered = ClientsList.Count,
            recordsTotal = ClientsList.Count
        });
        return json;
    } catch (Exception e) {

    }
}

数据

图片中的数据是针对ClientViewModel的 在客户端是同名的 我错过了什么 谢谢

【问题讨论】:

  • data 之后添加'dataSrc': function ( json ) { console.log(json); return json.data; } 作为选项,并在此处发布至少一条记录的输出。 .NET 有可能将响应包装在 {d: { /* response */ }} 中。如果是这种情况,请参阅this answer
  • @Maher Khalil。您是否尝试过链接中提到的更新的 Nuget 包?更新后的包具有不同的请求和响应模型名称。检查您提到的 GitHub 链接中的文档。
  • 可以分享表格html吗?请查看以下链接中的演示解决方案。 JQuery DataTables Demo

标签: jquery asp.net-core datatables


【解决方案1】:

在startup.cs上添加这个

services.AddMvc()
        .AddJsonOptions(options =>
         {
             options.SerializerSettings.ContractResolver
                 = new Newtonsoft.Json.Serialization.DefaultContractResolver();
         });

【讨论】:

    【解决方案2】:

    像这样在 JSON 返回中使用驼峰格式

    columns: [
            {
                title: "CivilID",
                data: "civilID",
            },
            {
                title: "LastName",
                data: "lastName"
            }, {
                title: "FirstName",
                data: "firstName"
            }
        ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多