You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# MVC中DataTables服务端分页参数传递方法

在C# MVC中使用DataTables实现服务端分页的参数传递问题
  • 我在C# MVC项目里用datatables.net做服务端加载,现在要实现服务端分页,但不知道怎么通过Javascript/Ajax给控制器传skiprecords、totalrecords这类分页参数。
  • 目前不传参数表格能正常加载,但需要让控制器知道当前是第4页,只返回该页的数据。
  • 官网的服务端分页示例能正常运行,但没看到传参数,搞不懂原理。

我的JS代码如下:

dataTable = $("#tblDetails").DataTable(
    {
        "sAjaxSource": "/MyController/MyMethod",
        "bServerSide": true,
        "bProcessing": true,
        "bSearchable": true,
        "order": [[1, 'asc']],
        "columns": [
            {
                "data": "Col1",
                "autoWidth": true,
                "searchable": true
            },
            {
                "data": "Col2",
                "autoWidth": true,
                "searchable": true
            },
        ]
    }
);

核心解答

DataTables自动传递的分页参数

当开启bServerSide: true时,DataTables会自动向服务端传递一套标准参数,无需手动拼接:

  • start:当前页需要跳过的记录数(对应你提到的skiprecords),比如第4页、每页10条的话,start值为30
  • length:每页显示的记录数
  • draw:请求的唯一标识号,服务端需要原样返回该值,用于DataTables校验渲染逻辑

此外还有排序、搜索相关的配套参数(如order[0][column]指定排序列、search[value]指定搜索关键词),可按需在控制器中接收。

C# MVC控制器接收参数示例

直接在控制器方法中声明对应参数即可接收:

public ActionResult MyMethod(int draw, int start, int length, string searchValue)
{
    // 分页逻辑:跳过start条,取length条数据
    var currentPageData = 你的数据查询方法(start, length, searchValue);
    var totalRecords = 总记录数查询方法();
    var filteredRecords = 过滤后记录数查询方法(searchValue);

    // 返回DataTables要求的标准格式JSON
    var response = new {
        draw = draw,
        recordsTotal = totalRecords,
        recordsFiltered = filteredRecords,
        data = currentPageData
    };

    return Json(response, JsonRequestBehavior.AllowGet);
}

官网示例的原理

官网示例无需手动传参,是因为开启bServerSide: true后,DataTables会自动封装并发送上述标准参数,后端服务完全遵循这套参数规范处理分页、排序、搜索逻辑,因此无需额外手动传递参数。


内容的提问来源于stack exchange,提问作者Frank Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:05:05