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

DataTables与ASP.NET Core MVC集成问题:表单无法读取全部值

问题原因

你遇到的问题是因为前端DataTables的列配置中没有指定name属性。当你对第5列(对应索引4,列从0开始计数)排序时,DataTables不会向后端传递该列的name参数,所以后端通过columns[4][name]读取到的值为空。

解决方案

有两种可行的解决方式:

方式一:前端为列添加name属性

修改前端DataTables的columns配置,给需要排序的列加上name属性(通常和data属性值一致即可):

$(document).ready(function() {
    var logs = $('#logs').dataTable({
        "processing": true,
        "serverSide": true,
        "filter": true,
        "ajax": {
            "url": "/api/logs",
            "type": "POST",
            "dataType": "json"
        },
        "columns": [
            { className: 'dt-control', orderable: false, 
                         data: null, defaultContent: ''},
            { "data": "timeStamp", "name": "timeStamp" },
            { "data": "level", "name": "level" },
            { "data": "queueId", "name": "queueId" },
            { "data": "message", "name": "message" }
        ]
    })
})

修改后,后端就能通过columns[N][name]正确获取到排序字段名。

方式二:后端直接读取columns[N][data]的值

既然前端已经给列指定了data属性,后端可以直接读取这个值来获取排序字段,不需要依赖name属性:

var orderColumn = Request.Form["order[0][column]"].FirstOrDefault();
// 改用columns[N][data]获取字段名
var sortColumnData = "columns[" + orderColumn + "][data]";
var sortColumn = Request.Form[sortColumnData].FirstOrDefault();
var sortColumnDirection = Request.Form["order[0][dir]"].FirstOrDefault();
var searchValue = Request.Form["search[value]"].FirstOrDefault();

这种方式不需要修改前端代码,直接调整后端逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:58:11