OData(创建自定义)查询选项

时间:2016-03-14 07:40:10

标签: c# asp.net asp.net-mvc asp.net-web-api odata

我需要创建一个自定义查询选项,说实话我不知道从哪里开始。我不知道它们是如何创建的,或者是哪个类处理它们。 在我的项目中我使用了markdown但我还需要启用(在这种情况下标记的文本将是markdown)或禁用(在这种情况下我将使用纯文本)。

此时我的解决方案是向函数发送参数并告诉它何时启用/禁用

EX:

  

... / ... / Namespace.MyFunction(降价= 1)

但我正在寻找获得此方法的方法

  

... / ... / ...?$降价=真

类似于计数查询选项。

谢谢

2 个答案:

答案 0 :(得分:2)

美元符号前缀应仅用于系统查询选项。将$视为保留命名空间。您当然可以使用自己的特定于应用程序的查询选项;只是不要在$前添加前缀。

要从控制器方法中的markdown请求URI中获取http://host/path?markdown=true的值,请使用GetQueryNameValuePairs扩展方法。另请参阅How to access all querystring parameters as a dictionary

答案 1 :(得分:1)

由于使用的是ASP.NET,因此也可以只使用常规的parameter binding

例如,具有以下原型的ODataController操作方法:

[EnableQuery]
public IQueryable<MyEntity> Get(string testParam = "")

将通过以下URL服务请求:

http://your.machine/api/odata/myentity?$count=true&$top=10&$skip=0&testParam=true

OData参数$count$top$skip将全部被接受,并且您的自定义testParam将在{内分配一个字符串"true" {1}}方法。