ngResource可以将嵌套对象传递给GET查询吗?

时间:2016-02-05 16:55:29

标签: angularjs asp.net-web-api2 ngresource

我正在使用ngResource与我的Web API进行通信。 我想向我的WebAPI控制器发送搜索请求,但对象不是平的:

var searchRequest = {
   query: "hotel",
   page: 1,
   price:
   {
      min: 1000,
      max: 2500
   }
}

我的控制器采用与发送对象相同结构的SearchRequest参数,因此请求应该看起来像

http://localhost/api/search?query=hotel&page=1&price.min=1000&price.max=2500

然而,ngResource $resource.query(searchRequest)正在发送此信息:

http://localhost/api/search?query=hotel&page=1price=%7B%22min%22:1000,%22max%22:2500%7D

1 个答案:

答案 0 :(得分:0)

如果是我,我会将其更改为使用返回IQueryable的OData属性端点。然后在前端使用breeze.js生成查询。看看这些:

https://ovaismehboob.wordpress.com/2014/01/18/adding-queryable-support-to-asp-net-web-api-controller-action-methods/

http://breeze.github.io/doc-js/server-odata.html

我可能错了,但我认为这不适用于嵌套查询。另一种解决方案可能是展平查询,然后使用linq投影或者自动投影投影来查询数据源,但这取决于你的linq提供商可以处理的内容