asp.net-core - Odata asp.net core 2.2 web api分页
问题描述
有没有办法从客户端发送的查询参数中处理页面大小。而不是代码中的默认值 Enablequery(Pagesize = 100)
解决方案
有没有办法从客户端发送的查询参数中处理页面大小。而不是代码中的默认值 Enablequery(Pagesize = 100)
要实现上述要求,您可以尝试创建和使用自定义的 EnableQueryAttribute,如下所示:
在自定义的 EnableQueryAttribute
public class MyCustomQueryableAttribute : EnableQueryAttribute
{
public override IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
{
// dynamically set PageSize of ODataQuerySettings
// based on pagesize that client sent through querystring
StringValues ps;
// set default value to pagesize
int pagesize = 2;
if (queryOptions.Request.Query.TryGetValue("pagesize", out ps))
{
pagesize = int.Parse(ps);
}
var result = queryOptions.ApplyTo(queryable, new ODataQuerySettings { PageSize = pagesize });
return result;
}
}
在 ODataController 动作中
[MyCustomQueryable]
public IActionResult Get()
{
return Ok(_db.Books);
}
测试结果
推荐阅读
- r - 如何在 R 中使用 GPU 进行 catboost 网格搜索?
- android - 如何使用 Android ConstraintLayout 组件在正方形内显示任何图像
- python - 以破折号返回多个轨迹图
- shell - 有没有在我的 WLS Ubuntu 18.04 上安装 DRAKE 的解决方案
- php - How To Make this table
- android - 按钮不会移动到 EditText 旁边
- java - 界面中的 JPA Hibernate 更新查询
- css - Oracle APEX 主题 CSS 左上角汉堡
- c++ - 从派生类访问基类中的类型别名
- python - 如何执行这个嵌套的 while true 循环?