有什么方法可以处理客户端发送的查询参数中的页面大小。而不是代码中默认的Enablequery(Pagesize = 100)
答案 0 :(得分:1)
有什么方法可以处理客户端发送的查询参数中的页面大小。而不是代码中默认的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);
}
测试结果