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

ASP.NET Core WebApi中如何获取Datatables.net传递的search[value]参数

解决方案

你遇到的参数绑定失败问题的核心原因是ASP.NET Core默认模型绑定规则需要和请求参数名完全匹配,search[value]属于带层级的命名格式,直接声明search参数无法匹配到对应的值。你可以选择以下两种方案解决:


方案1:直接指定参数绑定名称(快速适配单个参数)

在[FromQuery]特性中显式指定要绑定的请求参数名即可,不需要修改其他配置:

public IActionResult LoadDatatableData(
    [FromQuery] int draw,
    [FromQuery] int start,
    [FromQuery] int length,
    // 显式指定绑定search[value]参数
    [FromQuery(Name = "search[value]")] string searchValue,
    // 其余参数按需声明
)
{
    // 直接使用searchValue即可拿到对应的值
}

方案2:封装请求模型(推荐,适配完整Datatables服务端参数)

Datatables的服务端参数大多是columns[x][xx]、order[x][xx]这种层级命名格式,统一封装成模型类后续维护更方便:

  1. 先定义搜索参数类
public class DatatableSearch
{
    public string Value { get; set; }
    public bool Regex { get; set; }
}
  1. 定义完整的Datatables请求参数类
public class DatatableRequest
{
    public int Draw { get; set; }
    public int Start { get; set; }
    public int Length { get; set; }
    public DatatableSearch Search { get; set; }
    // 可按需扩展排序、列过滤对应的模型类
}
  1. 控制器方法直接接收模型即可
public IActionResult LoadDatatableData([FromQuery] DatatableRequest request)
{
    // 取搜索值直接调用 request.Search.Value 即可
}

ASP.NET Core的模型绑定器会自动把search[value]参数匹配到Search.Value属性上,不需要额外配置。


注意:你之前使用[FromHeader]无效是因为该参数属于查询字符串参数,不在请求头中;仅加[FromQuery]不指定Name的话,默认会按参数名匹配,自然找不到对应的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:01