Asp.Net核心Odata中,如何防止过滤字符串替换传递的文本

In Asp.Net core Odata, how to prevent filter string from replacing text passed

我正在传递一个 odata 查询,如下所示

http://localhost:5000/odata/Levels?$filter=contains(Code, '+14')

然而,当它进入我的控制器时,我看到接收到的过滤器对象被替换为

{contains(Code, ' 14')}

如您所见,+14 被替换为 14,其中 + 被替换为 space,因此我的查询失败了。我该如何解决这个问题?

这样试试:

http://localhost:5000/odata/Levels?$filter=contains(Code, encodeURIComponent('+14'))

我不知道你如何生成 URI 的其余部分,但你应该在将 +14 发送到服务器之前用编码表示替换它。

As you can see +14 is being replaced 14 where + is replaced with a space due to which my query is failing. How can I fix this issue?

+替换为%2B,然后像这样的odata查询:

http://localhost:5000/odata/Levels?$filter=contains(Code, '%2B14')