據這裏的文檔......OData集合參數綁定...他們實際上工作嗎?
http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/odata-actions
...
綁定一個動作一個實體集
在前面的例子中,動作綁定到單一實體: 客戶評估單一產品。您還可以將操作綁定到實體集合。只需進行以下更改:
在EDM中,將操作添加到實體的Collection屬性。
var rateAllProducts = builder.Entity()。Collection.Action(「RateAllProducts」);在 控制器方法中,省略關鍵參數。
[HttpPost]公衆詮釋RateAllProducts(ODataActionParameters 參數){// ....}
爲什麼,當我做到這一點它不起作用......
發票編號:
public class InvoiceReference
{
public string InvoiceNumber { get; set; }
public int SupplierId { get; set; }
}
行動設置:
var getByRefs = Builder.EntityType<SIHead>().Collection.Action("ByRefs");
getByRefs.CollectionParameter<InvoiceReference>("refs");
getByRefs.ReturnsCollectionFromEntitySet<SIHead>("SIHead");
在控制器
操作方法:
[HttpPost]
[EnableQuery]
[ODataRoute("ByRefs")]
public async Task<IHttpActionResult> ByRefs(ODataActionParameters p)
{
var refs = p["refs"] as InvoiceReference[];
// exception p is null
}
例JSON內容發佈:
[
{
"InvoiceNumber": "5100011759|9800006622",
"SupplierId": 2
},
{
"InvoiceNumber": "5100012624|9800006635",
"SupplierId": 2
},
{
"InvoiceNumber": "5100012625|9800006636",
"SupplierId": 2
}
]
在我看來,要麼我錯過了什麼或OData的壞。
嘗試發佈內容,如下面,你需要在文章內容中的JSON格式值指定參數名稱,這應該工作, {「裁判」: [ { 「InvoiceNumber」:「5100011759 | 9800006622 」, 「供應商ID」:2 }, { 「InvoiceNumber」: 「5100012624 | 9800006635」, 「供應商ID」:2 }, { 「InvoiceNumber」: 「5100012625 | 9800006636」, 「供應商ID」 :2 } ] } – Vincent
是的,我做了,不起作用......我還在github上提出了這個問題:https://github.com/OData/WebApi/issues/758 – War