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

.NET Core 3.0分页功能无返回结果问题求助

问题排查与修复方案

让我帮你梳理下代码里的几个关键错误,这些问题直接导致了分页后返回空数组,同时驼峰格式转换器失效:

1. 仓储层分页方法参数传递错误

你的GetUsers方法调用CreateAsync时,错误地把PageSize传了两次,完全忽略了PageNumber:

// 错误代码
return await PagedList<User>.CreateAsync(users, userParams.PageSize, userParams.PageSize);

这会导致分页逻辑中Skip((pageNumber - 1) * pageSize)的pageNumber被替换成了PageSize,当PageSize大于1时,会跳过远超预期的数据量,最终返回空结果。修正为:

// 正确代码
return await PagedList<User>.CreateAsync(users, userParams.PageNumber, userParams.PageSize);

2. PagedList构造函数属性赋值错误

在PagedList的构造函数里,你把PageSize错误地赋值为pageNumber:

// 错误代码
PageSize = pageNumber;

这会导致分页的每页条数被错误设置为当前页码,进一步打乱分页计算逻辑。修正为:

// 正确代码
public PagedList(List<T> items, int count, int pageNumber, int pageSize) { 
    TotalCount = count; 
    PageSize = pageSize; // 改为pageSize
    CurrentPage = pageNumber; 
    TotalPages = (int)Math.Ceiling(count / (double) pageSize); 
    this.AddRange(items); 
}

3. 分页头部序列化参数使用错误

在AddPagination扩展方法中,你错误地将分页头部对象和序列化设置打包成元组进行序列化,这不仅会导致驼峰转换失效,还会序列化出错误的内容:

// 错误代码
response.Headers.Add("Pagination", JsonConvert.SerializeObject((paginationHeader, camelCaseFormatter)));

正确的用法是把序列化设置作为SerializeObject的第二个参数传入:

// 正确代码
response.Headers.Add("Pagination", JsonConvert.SerializeObject(paginationHeader, camelCaseFormatter));

验证修复

把以上三处错误修正后,重新运行接口,用Postman测试:

  • 接口会正常返回分页后的用户数据
  • 响应头中的Pagination字段会以驼峰格式返回分页参数
  • 状态码保持200 OK正常

内容的提问来源于stack exchange,提问作者Web Develop Wolf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:34:10