RecordIem
の単一オブジェクトで動作する基本的なpost操作があります。私がやりたいのは、同じフォーマットを使用してリクエストの配列を投稿することにより、同じアクションを一括して行うことです。
例えば:
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]
を使用する場合、要求パラメーターはnull
であり、[ModelBinding]
を使用する場合、リストは空です。両方を使用してみましたが、どちらも機能しません。
クライアントで単一の投稿をループすることに頼る必要はありません。
ありがとう
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,
...
},
{ ... }
]
}