.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
相关产品推荐
相关产品推荐

