ASP.NET MVC中的JQuery Datatable插件数据绑定

时间:2012-07-05 14:42:25

标签: jquery asp.net-mvc json datatables

我正在尝试在ASP.NET MVC应用程序中使用JQuery Datatable插件。但是,虽然我的控制器将JSON数据返回到插件,但该表显示Loading...消息并且卡在那里。

这是我的控制器,

public ActionResult GetCompanies(jQueryDataTableParamModel param)
{
   return Json(new
   {
       sEcho = param.sEcho,
       iTotalRecords = 97,
       iTotalDisplayRecords = 3,
       aaData = new List<string[]>() {
           new string[] {"1", "a1", "a2", "a3"},
           new string[] {"2", "b1", "b2", "b3"},
           new string[] {"3", "c1", "c2", "c3"}
           }
       }, JsonRequestBehavior.AllowGet);     
}

这是datatable插件的初始化。

$('#companyDataTable').dataTable({
    bProcessing: true,
    sAjaxSource: '@Url.Action("GetCompanies", "Company")'
});

这是我桌子的截图。

enter image description here

这是从Company/GetCompanies

返回到插件的JSON数据
{ "sEcho":null,
  "iTotalRecords":97,
  "iTotalDisplayRecords":3,
  "aaData":[ ["1","a1","a2","a3"],
             ["2","b1","b2","b3"],
             ["3","c1","c2","c3"]
           ]
}

jQuerDataTableParamModel是一个显示here的类。我也尝试了question的答案,但没有一个对我有效。

编辑:

这就是插件请求的样子。

enter image description here

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:2)

您需要返回与请求相同的sEcho值。在您的响应中,“sEcho”值为null,因此DataTables无法将请求与响应连接起来。

来自DataTables documentation

  

sEcho 从客户端发送的未经更改的sEcho副本。此参数将随每次抽奖而变化(基本上是抽奖计数) -   所以实施这一点很重要。请注意它强烈   出于安全原因建议您将此参数“强制转换为”   整数,以防止跨站点脚本(XSS)攻击。

答案 1 :(得分:0)

对于OP来说可能为时已晚,但我猜测你使用的是DataTables的1.10版本?

传入的参数与早期版本完全不同,这就是为什么该教程中的自定义对象(jQueryDataTableParamMode)没有任何绑定到它的属性的原因。

目前,传入变量版本1.10的最新文档为enter link description here

你可以看到这个谈论一个名为&#34; draw&#34;的变量。它取代了旧的&#34; sEcho&#34;

版本1.9或更早版本的相同文档页面为here

此外here is a comparison list用于从1.9升级到1.10