Asp.net web api 使用ODataURL传递多个参数
我想使用OData协议在Get请求中传递多个参数。下面是我正在做的 我使用fiddler获取请求,如下所示Asp.net web api 使用ODataURL传递多个参数,asp.net-web-api,odata,Asp.net Web Api,Odata,我想使用OData协议在Get请求中传递多个参数。下面是我正在做的 我使用fiddler获取请求,如下所示 https://127.0.0.1/odata/controllerName('param1','param2') 在我的控制器类中,我有两个控制器方法。第一个控制器方法只接受一个参数,第二个控制器方法接受两个参数。带有一个参数的控制器方法工作正常。当我请求带有两个参数的控制器方法时,它会调用带有一个参数的控制器方法。我无法理解为什么它不能识别带有两个参数的控制器方法。或者OData不支
https://127.0.0.1/odata/controllerName('param1','param2')
在我的控制器类中,我有两个控制器方法。第一个控制器方法只接受一个参数,第二个控制器方法接受两个参数。带有一个参数的控制器方法工作正常。当我请求带有两个参数的控制器方法时,它会调用带有一个参数的控制器方法。我无法理解为什么它不能识别带有两个参数的控制器方法。或者OData不支持多个参数
控制器方法1
public int controllerName([FromOdataUri] string key);
控制器方法2
public int controllerName([FromODataUri] string param1, [FromODataUri] string param2);
OData接受一个参数,但它可以是作为请求主体传递的JSON字典。在“调用操作”标题下,通过谷歌搜索ODataActionParameters了解.NET的WebAPI如何实现OData参数字典要求。根据OData协议,如果实体的键由两个属性组成,则可以通过以下方式查询:
~/odata/EntitySet(key1='key1',key2='key2')
但是,如果您没有这样的键,那么您可能需要使用GET调用的函数,并在URL中传递参数,例如
~/odata/Products(33)/Default.CalculateGeneralSalesTax(state='WA')
~/odata/GetSalesTaxRate(state='CA')
请参考此示例:
您可以添加任意数量的参数。由于链接示例。。。似乎有必要实现复合密钥处理程序,如果您想这样调用它。。。