【问题标题】:Pass multiple parameters with OData URL使用 OData URL 传递多个参数
【发布时间】:2014-04-06 21:43:28
【问题描述】:

我想使用 OData 协议在我的获取请求中传递多个参数。以下是我正在做的事情。

我正在使用提琴手进行 GET 请求,如下所示

https://127.0.0.1/odata/controllerName('param1','param2')

在我的控制器类中,我有两个控制器方法。第一个控制器方法只接受一个参数,第二个控制器方法接受两个参数。具有一个参数的控制器方法工作正常。当我请求具有两个参数的控制器方法时,它调用具有一个参数的控制器方法。我无法理解为什么它不能识别带有两个参数的控制器方法。或者OData不支持多参数。

控制器方法一

public int controllerName([FromOdataUri] string key);

控制器方法二

public int controllerName([FromODataUri] string param1, [FromODataUri] string param2);

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    根据OData协议,如果实体的key由2个属性组成,那么可以这样查询:

        ~/odata/EntitySet(key1='key1',key2='key2')
    

    但是如果你没有这个key,那么你可能需要Functions,用GET调用,参数在URL中传入,比如

        ~/odata/Products(33)/Default.CalculateGeneralSalesTax(state='WA') 
        ~/odata/GetSalesTaxRate(state='CA')
    

    请参考此示例:https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataFunctionSample/

    您可以添加任意数量的参数。

    【讨论】:

    • 由于链接示例...似乎需要实现复合键处理程序,如果您想这样调用它...
    【解决方案2】:

    OData 采用一个参数,但它可以是作为请求正文传递的 JSON 字典。 See the example here 在“Invoking the Action”标题下,谷歌搜索 ODataActionParameters 以了解 .NET 的 WebAPI 如何实现 OData 参数字典要求。

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2021-03-04
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      相关资源
      最近更新 更多