是否可以接受odata过滤器作为字符串而不是odataqueryoptions?

时间:2017-05-16 21:46:32

标签: c# .net rest odata visual-studio-2017

我有一个控制器应该接受某种类型的过滤器,然后针对web api端点转发请求,例如public IHttpActionResult Get(ODataQueryOptions options) { //execute GET against http://crmorg/v2/api/options.Request.RequestUri.PathAndQuery; }

public IHttpActionResult Get(string options)
{
 //
}

我可以简单地接受一个字符串作为odata过滤器,而不是上面的内容,例如:

<?xml version="1.0" encoding="utf-8"?>
<Datas xsi:schemaLocation="uri:rhubarb:pie RHUBARB%20PIE%202012.xsd" xmlns="uri:rhubarb:pie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<\Datas>

我可以将odata过滤器作为字符串直接传递给控制器​​吗?

1 个答案:

答案 0 :(得分:0)

从理论上讲,你可以做到这一点。但是:

  • 您无法使用默认属性映射
  • 您需要解析查询字符串并关注所有可能的输入变体(考虑多参数,排序,分页,过滤)
  • 您需要拼凑数据库查询及其选项

简而言之 - 你很少需要这样做。尝试查看您的模型,看看是否有办法使用Web API中提供的功能。