我们有一个控制器,该控制器在get路由中需要一些参数,但是$top
之类的OData函数不起作用。
According to the docs(自定义查询选项)仅在自定义选项中声明@
前缀就可以正常工作,但不是:
@
作为前缀(如文档中所建议),参数filtro
未被填充,并且为其所有属性获取默认值。$top
函数将被忽略,并且显示的记录太多了(2K +)。There is another answer here on SO to something similar,但可以推断,我们使用的OData V3没有明确的Edm模型构建器。
你们解决了这个问题吗?
这是我的代码:
获取请求:
~/ProdutosRelevantes?$top=5&
filtro.Cnpjs[0]=00000000000001&
filtro.DataInicio=2018-01-01&
filtro.DataFim=2018-12-01&
filtro.IndMercado=2&
控制器方法:
[HttpGet]
public IHttpActionResult ProdutosRelevantes([FromUri] ParametrosAnalise filtro)
{
var retorno = GetService().GetProdutosRelevantes(filtro);
return Content(HttpStatusCode.OK, retorno);
}
public class ParametrosAnalise { public Guid IdCliente { get; set; } public string[] Cnpjs { get; set; } public DateTime? DataInicio { get; set; } public DateTime? DataFim { get; set; } public EnumEscopoMercado? IndMercado { get; set; } // Enum declaration public enum EnumEscopoMercado { [Description("INCLUI NACIONAL")] InternoEExterno = 1, [Description("EXTERIOR")] Externo = 2 } }
谢谢。
答案 0 :(得分:5)
您是否在操作中使用[EnableQuery]装饰器启用了oData? 还是在您的HttpConfiguration => config.EnableQuerySupport()中?