使用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, ... }, { ... } ] }