J'ai une opération de publication de base qui fonctionne sur un seul objet de RecordIem
. Ce que je voudrais faire, c'est faire la même action mais en masse en publiant un tableau de demandes en utilisant le même format.
Par exemple:
public HttpResponseMessage Post(RecordItem request)
{
var recordItems = _recorder.RecordItem(request);
return Request.CreateResponse(HttpStatusCode.OK, recordItems);
}
Et quand je poste le Json:
{
Id : "7UP24fVkGOxSjrcclghe_mP2-po",
System : 1,
Environment : "Production"
}
tout fonctionne bien. Je voudrais publier Json similaire à:
{
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"
}
Et ayez une méthode similaire à celle ci-dessous:
public HttpResponseMessage Post(RecordItem[] request)
{
var recordItems = _recorder.RecordItems(request);
return Request.CreateResponse(HttpStatusCode.OK, recordItems);
}
J'ai essayé d'utiliser à la fois le [FromBody]
et [ModelBinding]
attributs sur le tableau et essayé d'utiliser différents types (List, IList, IEnumerable) mais en vain. Lors de l'utilisation de [FromBody]
le paramètre de demande est null
et lorsque vous utilisez [ModelBinding]
la liste est vide. J'ai essayé d'utiliser les deux et cela ne fonctionne pas non plus.
Je préfère ne pas avoir à recourir à des messages uniques en boucle dans mon client.
Merci
Puisque votre Post
attend un RecordItem[]
, votre contenu JSON dans votre corps de demande doit également être dans un tableau.
Ce que vous avez est assez proche - essayez d'ajouter une paire de crochets []
autour de vos données:
[{
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"
}]
Pour tous ceux qui obtiennent juste un tableau vide quoi qu'ils essaient, essayez ceci:
var request = $.ajax({
dataType: "json",
url: "/api/users",
method: "POST",
data: { '': postData}
});
Les données doivent être un seul objet anonyme au lieu d'un tableau brut.
Des informations ont été trouvées ici .
Il est important que votre json contienne le nom du paramètre request
. Une autre remarque: vous devez le poster sous forme de tableau.
Votre json ressemblerait à ceci:
{
"request": [
{
"Id": "...",
"System": 1,
...
},
{ ... }
]
}