如何在.NET Core Web API中构建适配DataTables.js的数据结构
实现DataTables适配的.NET Core Web API数据结构
1. 创建通用数据包装类
先定义一个泛型类,精准匹配DataTables要求的{data: [...]}结构:
public class DataTablesResponse<T> { public List<T> data { get; set; } }
泛型T可以替换为你的任意业务实体类(比如User、Order),data字段名必须和DataTables的要求完全一致(默认是小写,若项目配置了驼峰序列化,也可以用大写开头的Data,序列化后会自动转小写)。
2. 在API控制器中使用
获取业务数据后,直接将其包装进上述类实例返回即可:
[ApiController] [Route("api/[controller]")] public class DataController : ControllerBase { [HttpGet("table-data")] public IActionResult GetTableData() { // 替换为你的实际业务数据获取逻辑(比如从数据库查询) var businessList = new List<YourBusinessModel> { new YourBusinessModel { Id = 1, Title = "示例数据1" }, new YourBusinessModel { Id = 2, Title = "示例数据2" } }; // 包装成DataTables所需结构 var response = new DataTablesResponse<YourBusinessModel> { data = businessList }; return Ok(response); } }
3. 序列化配置(可选)
如果你的项目默认序列化是大驼峰格式(字段首字母大写),可以在Program.cs中配置为小驼峰,确保返回的JSON字段名和DataTables要求的data一致:
builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; });
扩展说明(可选)
如果后续要支持DataTables的分页、排序、搜索功能,可扩展包装类添加对应字段:
public class DataTablesResponse<T> { public int draw { get; set; } public int recordsTotal { get; set; } public int recordsFiltered { get; set; } public List<T> data { get; set; } }
这样就能完全适配DataTables的服务端处理模式。
内容的提问来源于stack exchange,提问作者onurkul
相关产品推荐
相关产品推荐

