Razor/ASP.NET MVC Core 7:如何将所有分页的编辑表格数据返回至控制器
解决DataTables分页表格提交所有数据的问题
你的代码只能获取当前页数据,是因为DataTables默认只在DOM中渲染当前页的行,遍历DOM自然拿不到其他分页的数据。直接用DataTables提供的API就能获取全量数据,以下是具体方案:
核心思路
利用DataTables的rows().nodes()或rows().data()API,直接从表格实例中获取所有分页的行数据,而非遍历DOM元素。
完整代码示例
1. 确保表格已初始化为DataTables实例
如果还没初始化,先执行:
var table = $('#table1').DataTable();
2. 获取所有分页的单元格数据
如果是直接编辑表格DOM内容的场景,用以下代码提取所有单元格文本:
var myTableArray = []; // 遍历所有分页的行DOM节点 table.rows().nodes().each(function(rowNode) { // 提取当前行的所有单元格内容 $(rowNode).find('td').each(function() { myTableArray.push($(this).text().trim()); }); });
如果你的表格是基于数据源(如AJAX加载),且编辑后已同步到DataTables的数据源中,可直接获取结构化数据:
// 获取所有行的结构化数据,转为数组 var allData = table.rows().data().toArray();
3. 发送AJAX请求到控制器
注意设置contentType为application/json,确保控制器能正确接收数组:
$.ajax({ type: 'POST', url: '/Controller/Action', contentType: 'application/json', data: JSON.stringify(myTableArray), // 或JSON.stringify(allData) success: function(res) { // 处理成功逻辑 }, error: function(xhr) { // 处理错误逻辑 } });
控制器Action示例
C#后台需对应接收参数:
[HttpPost] public IActionResult Action(List<string> myTableArray) { // 处理提交的全量数据 return Json(new { Success = true }); }
额外提示
如果使用DataTables Editor插件实现编辑功能,可直接调用editor.data()获取所有编辑后的数据,无需手动遍历。
内容的提问来源于stack exchange,提问作者sprash
相关产品推荐
相关产品推荐

