按值筛选时查询返回 400 Sitefinity

Query Returning 400 When Filtering By Value Sitefinity

我目前被困在一个我找不到解决方案的问题上。我们使用自己的 API 调用 Sitefinity 和 return 对象 Insights。我们目前正在尝试仅将 IsFeatured 值设置为 yes 的 return 见解。这是 returned 作为 10

据我所知,问题出在我的查询字符串中。我得出这个结论是因为起初我们使用查询 $"/insights?$orderby=PublishDate&$top={topN}"。这 return 按 PublishDate 排序并仅带回我们输入的值,如预期的那样编辑了见解,例如 3

当我尝试将筛选器添加到查询时出现问题。目前看起来像这样:$"/insights?$filter=contains(IsFeatured, 1)&$orderby=PublishDate&$top={topN}"。但是,当它运行时 return 错误请求的代码 400。

根据 Sitefinity 文档,这是使用过滤器的方法:

https://www.progress.com/documentation/sitefinity-cms/filtering-and-sorting-operations#filter-by-field-value

我们之前也像这个例子一样使用过过滤器:

$"/insights?$filter=contains(InsightCategory, 'NEWSLETTER')&$orderby=PublishDate&$skip={skip}&$top={take}"

这按预期工作。

我尝试了一些变体来尝试让它工作,但所有请求 return 400。更多可能有帮助的信息是 IsFeatured 的 returned 类型是一个 int。此调用中的值也被 returned:$"/insights?$orderby=PublishDate&$top={topN}"。我可以在结果中看到这一点:

此外,大写字母的语法是正确的,因为如上所见,过滤请求使用相同的语法。我也尝试用 0 替换 1 进行测试,但这也失败了。

Choice 字段与其他字段略有不同。请参阅 this article 了解如何按选择字段进行过滤。

按 ChoiceField 值过滤集合

NOTE: When working with ChoiceField through the OData web services, the field value is returned as a number (e.g. 2, 4, 8) instead of the actual selected textual value in this field (e.g. Option1, Option2, Option3). The returned value indicates which choice option has been selected. It is returned as the 2 to the power of the position of that choice in the collection of all choices (2n). For example, if you have configured your ChoiceField with 4 options - Option 1, Option 2, Option 3, Option 4 the value which will be returned by the service will be:

If the selected option is Option 1, the service returns 1 (2 to the power of 0) If the selected option is Option 2, the service returns 2 (2 to the power of 1) If the selected option is Option 3, the service returns 4 (2 to the power of 2) If the selected option is Option 4, the service returns 8 (2 to the power of 3)

另外,请参阅 Sitefinity 博客上支持的语法例外部分

Supported Syntax Exceptions