如何解决如何将控制器绑定到 .NET Core/5 中的多维查询字符串参数
我有一个 Web 客户端,它使用 jQuery 数据表进行服务器端分页和排序。它通过查询字符串以特定方式发送参数:
这是发送到服务器的订单参数的示例:
&order[0][column]=1&order[0][dir]=asc&start=0&length=10&search[value]=&search[regex]=false&_=1618229879540
我很难在 ApiController 类中绑定到这些参数。
控制器代码:
[HttpGet]
public async Task<ActionResult<DataTable<Audit>>> GetAudits([FromQuery]DataTableParams dataTableParams)
{
var audits = await _auditRepository.GetAuditsAsync(dataTableParams);
return Ok(audits);
}
参数类:
public class DataTableParams
{
public int Draw { get; set; }
public int Start { get; set; }
public int Length { get; set; } = 30;
public string Dir { get; set; }
public IEnumerable<DtOrder> Order { get; set;}
}
public class DtOrder
{
/// <summary>
/// Column to which ordering should be applied.
/// This is an index reference to the columns array of information that is also submitted to the server.
/// </summary>
public int Column { get; set; }
/// <summary>
/// Ordering direction for this column.
/// It will be dt-string asc or dt-string desc to indicate ascending ordering or descending ordering,respectively.
/// </summary>
public string Dir { get; set; }
}
我做错了什么?我试过 DtOrder[] 而不是 IEnumerable。在每种情况下,框架都无法绑定到 order 参数,lenght/count 为 0。
解决方法
对于那些正在寻找这个确切东西的人。
- Datatables 以特定格式的查询字符串发送数据。
- 似乎没有一种简单的方法来绑定需要为此创建自定义绑定器的数据。
有一个 NuGet 包专门处理帮助格式化和响应数据表请求。 DataTables.AspNet.AspNetCore 是一个包,它有一个活页夹以及能够绑定到数据库查询字符串以及格式化数据表响应所需的一切。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。