Asp.net mvc 数据表错误:“;请求的未知参数”;
如果我从代码中删除aoColumns,datatable将正常生成,但当我添加aoColumns时,我得到: DataTables警告(表id='data table'):从数据源为第0行请求了未知参数'Agents' HTML: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 () { $('
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" }
]