为了账号安全,请及时绑定邮箱和手机立即绑定

按值过滤时查询返回 400 Sitefinity

按值过滤时查询返回 400 Sitefinity

C#
繁花不似锦 2023-08-13 16:01:37
我目前陷入了一个尚未找到解决方案的问题。我们使用自己的 API 来调用 Sitefinity 并返回名为 的对象Insights。我们目前尝试仅返回IsFeatured值设置为 的见解yes。1它以 a或 a 的形式返回0。据我所知,问题出在我的查询字符串中。我得出这个结论是因为一开始我们使用的是查询$"/insights?$orderby=PublishDate&$top={topN}"。这按预期返回了见解,按 PublishDate 排序,并且仅返回我们输入的值,例如3。当我尝试将过滤器添加到查询中时出现问题。目前它看起来像这样:$"/insights?$filter=contains(IsFeatured, 1)&$orderby=PublishDate&$top={topN}"。然而,当它运行时,它会返回错误请求代码 400。我们之前也使用过过滤器,如下例所示:$"/insights?$filter=contains(InsightCategory, 'NEWSLETTER')&$orderby=PublishDate&$skip={skip}&$top={take}"这按预期工作。我尝试了一些变体来尝试让它工作,但所有请求都返回 400。更多可能有帮助的信息是 IsFeatured 返回的类型是 int。此调用也返回该值:$"/insights?$orderby=PublishDate&$top={topN}"。我可以在结果中看到这一点:此外,大写的语法是正确的,因为如上面所见,工作的过滤器请求使用相同的语法。我也尝试用 a 替换 进行1测试0,但这也失败了。
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

选择字段与其他字段略有不同。

按 ChoiceField 值过滤集合

注意:通过 OData Web 服务使用 ChoiceField 时,字段值以数字形式返回(例如 2、4、8),而不是该字段中实际选择的文本值(例如选项 1、选项 2、选项 3)。返回值表示已选择哪个选项。它以 2 的幂形式返回该选项在所有选项集合中的位置 (2n)。例如,如果您为 ChoiceField 配置了 4 个选项 - 选项 1、选项 2、选项 3、选项 4,则服务返回的值将是:

如果所选选项为选项 1,则服务返回 1(2 的 0 次方) 如果所选选项为选项 2,则服务返回 2(2 的 1 次方) 如果所选选项为选项 3,则服务返回返回 4(2 的 2 次方) 如果所选选项是选项 4,则服务返回 8(2 的 3 次方)


查看完整回答
反对 回复 2023-08-13
?
烙印99

TA贡献1829条经验 获得超13个赞

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

支持的语法异常


查看完整回答
反对 回复 2023-08-13
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信