使用MVC Web API发布对象数组

我有一个基本的post操作,适用于RecordIem的单个对象。 我想做的是做同样的操作,但是通过使用相同的格式发布一系列请求来批量操作。

例如:

 public HttpResponseMessage Post(RecordItem request) { var recordItems = _recorder.RecordItem(request); return Request.CreateResponse(HttpStatusCode.OK, recordItems); } 

当我发布Json时:

 { Id : "7UP24fVkGOxSjrcclghe_mP2-po", System : 1, Environment : "Production" } 

一切正常。 我想发布Json类似于:

 { Id : "7UP24fVkGOxSjrcclghe_mP2-po", System : 1, Environment : "Production" }, { Id : "ClPE188H4TeD2LbQPeV_EzCsKVM", System : 1, Environment : "Production", Label : "RestTest1" }, { Id : "SAWTMJzm-_AFqoNw70-gLeUzB4k", System : 1, Environment : "Production" } 

并有一个类似于下面的方法选择它:

 public HttpResponseMessage Post(RecordItem[] request) { var recordItems = _recorder.RecordItems(request); return Request.CreateResponse(HttpStatusCode.OK, recordItems); } 

我尝试过使用数组上的[FromBody][ModelBinding]属性并尝试使用不同的类型(List,IList,IEnumerable),但无济于事。 使用[FromBody] ,request参数为null ,使用[ModelBinding]列表为空。 我尝试过使用这两种方法,但也无效。

我宁愿不必在我的客户端中使用循环单个post。

谢谢

由于你的Post需要一个RecordItem[] ,你的请求体中的JSON内容也应该在一个数组中。

你拥有的非常接近 – 尝试在你的数据周围添加一对方括号[]

 [{ Id : "7UP24fVkGOxSjrcclghe_mP2-po", System : 1, Environment : "Production" }, { Id : "ClPE188H4TeD2LbQPeV_EzCsKVM", System : 1, Environment : "Production", Label : "RestTest1" }, { Id : "SAWTMJzm-_AFqoNw70-gLeUzB4k", System : 1, Environment : "Production" }] 

对于所有只是尝试一个空数组的人来说,试试这个:

 var request = $.ajax({ dataType: "json", url: "/api/users", method: "POST", data: { '': postData} }); 

数据必须是单个匿名对象而不是原始数组。

信息在这里找到。

您的json包含request参数名称非常重要。 另请注意:您必须将其作为数组发布。

你的json看起来像这样:

 { "request": [ { "Id": "...", "System": 1, ... }, { ... } ] }