如何将值从控制器传递给jquery数据表

时间:2014-08-12 09:23:41

标签: asp.net-mvc jquery-datatables

我的数据表脚本代码是:

$('#datatable').dataTable({

        "processing": true,
        "bServerSide": true,
        "sAjaxSource": "/Employee/AjaxHandler",
        "fnServerParams": function ( aoData ) {
            aoData.push( { "name": "start", "value": something } );
        }

这是在控制器中调用方法AjaxHandler:

    public ActionResult AjaxHandler(JQueryDataTableParamModel param,int start)
                {
              ...
return Json(new
            {
                sEcho = param.sEcho,
                iTotalRecords = count,
                iTotalDisplayRecords = count,
                aaData = result
            },
            JsonRequestBehavior.AllowGet);
                }

我想返回一个带有AjaxHandler方法值的变量,该方法将分配给该属性 "值"在aoData.push()里面,它将被分配给名为&#34的参数; start"在分页/排序/过滤期间再次调用时,在AjaxHandler方法中。我该怎么做

2 个答案:

答案 0 :(得分:2)

参考以下链接 http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part

这是一个非常完整的分步指南,指导您如何实现创建ajax jquery数据表的目标

答案 1 :(得分:0)

我假设您正在尝试使用MVC获取数据表功能(分页等)吗? @ Se0ng11添加的链接非常好,你应该坚持下去。

为了给你一点开始,你需要为JQueryDataTableParamModel创建一个类:

public class jQueryDataTableParamModel
{
    public string sEcho { get; set; }
    public string sSearch { get; set; }
    public int iDisplayLength { get; set; }
    public int iDisplayStart { get; set; }
    public int iColumns { get; set; }
    public int iSortingCols { get; set; }
    public string sColumns { get; set; }
}

将此模型传递给填充有分页,排序和放大器的控制器。过滤信息 - 您不需要添加aoData.push

在您的控制器操作中:

public ActionResult AjaxHandler(JQueryDataTableParamModel param)
{
    // query to get data
    var data = from a in b select a;

    var count = data.count();

    //use the paging params on your datasource
    var displayedItems = data.Skip(param.iDisplayStart).Take(param.iDisplayLength);
    //  project results into json for datatable
    var result = from r in filteredItems
        select new object[]
        {
          r.Id,
          r.Name
          ...
        }

     return Json(new
     {
          param.sEcho,
          iTotalRecords = count,
          iTotalDisplayRecords = count,
          aaData = result
      }, JsonRequestBehavior.AllowGet);
}

您可以在控制器方法中放置断点,并查看JQueryDataTableParamModel

中传递的内容