Asp.net mvc 数据表错误:“;请求的未知参数”;

Asp.net mvc 数据表错误:“;请求的未知参数”;,asp.net-mvc,json,jquery-datatables,Asp.net Mvc,Json,Jquery Datatables,如果我从代码中删除aoColumns,datatable将正常生成,但当我添加aoColumns时,我得到: DataTables警告(表id='data table'):从数据源为第0行请求了未知参数'Agents' HTML: var headers = [{ "mDataProp": "Agents" },{ "mDataProp": "Buyer" },{ "mDataProp": "Date" }]; $(document).ready(function () { $('

如果我从代码中删除aoColumns,datatable将正常生成,但当我添加aoColumns时,我得到:

DataTables警告(表id='data table'):从数据源为第0行请求了未知参数'Agents'

HTML:

var headers = [{ "mDataProp": "Agents" },{ "mDataProp": "Buyer" },{ "mDataProp": "Date" }];
$(document).ready(function () {   
    $('#data-table').dataTable({
        "bFilter": false,
        "bLengthChange": false,
        "iDisplayLength": 25,
        "bJQueryUI": true,
        "bServerSide": true,
        "bProcessing": true,
        "sPaginationType": "full_numbers",
        "aoColumns": headers,
        "sAjaxSource": '/report/TestPaging',         
    });
});

您遇到的错误是由于JSON的内容与您的
aoColumns
定义不匹配造成的。您在
aoColumns
中指定的名称必须与JSON中的名称完全相同,并且JSON中每个对象的长度必须等于原始HTML表中的列数。有关说明,请参见。在您的情况下,JSON应该如下所示:

  Json(new{
            sEcho = param.sEcho,
            iTotalRecords = visitRepository.Query.Count(),
            iTotalDisplayRecords = visitRepository.Query.Count(),
            aaData = data
        }, JsonRequestBehavior.AllowGet);
…而您的JSON不遵循该方案。如果您没有使用
aoColumns
,那么数据是按索引插入的,而不是按名称插入的——这就是为什么它在没有它的情况下对您有效的原因

您可以通过
sTitle
属性配置标题名称(标题):

[{
  "Agents": "tM4Ga0zX",
  "Buyer": "ZKwMEiIa",
  "Date": "K3lS2yn9"
},
...]

根据您的问题查看此演示->

您的对象/json是什么样子的?这不应该是问题,没有aoColumns行,表生成的很好。请参阅我的回答,我认为,没有-我确定-这实际上是一个json问题:)尝试重命名fiddle中的一个json antries,只有一个col,就像第一个“代理”,您可以复制错误。所以我不能只使用字符串[]并将其作为JSON返回?下面是一个很好的答案(asp.net-mvc-3和sAjaxSource)->。至于避免错误,重要的是形成
aaData
正确,在链接中尝试接受答案中的建议,并将
sEcho
iTotalRecords
等保留在外。问题是我的列不是预设的,它们可以是许多东西,取决于其他条件。我希望只命名标题,这样我就可以使用动态linq进行排序,但是使用这种格式格式化json会有点困难。那么,为什么不生成整个表服务器端呢?当我不知道前面的结果时,我自己就是这么做的。我返回整个内容,
和完整的
,然后在此基础上调用dataTables。这种方法的缺点是,在浏览器报告超时之前,您被限制在5000行左右,因为初始化数据表时速度很慢(jQuery函数非常慢)。遗憾的是,我对asp.net知之甚少,只能说明datatables抛出错误的原因以及如何避免错误:(我有几千行,所以我必须使用分页来减少加载时间。要使用分页,我无法生成整个表,因为这将花费太长的时间,这样我可以在毫秒内得到表。我将看看如何生成json响应以与标题保持一致
[{
  "Agents": "tM4Ga0zX",
  "Buyer": "ZKwMEiIa",
  "Date": "K3lS2yn9"
},
...]
aoColumns: [
  { mDataProp: "Agents", sTitle : "Agents" }, 
  { mDataProp: "Buyer", sTitle : "Buyer" },
  { mDataProp: "Date", sTitle : "Date" }
]