J'ai lutté pendant quelques jours pour trouver tout ce qui fonctionnait pour moi, comme passer plusieurs tableaux d'identifiants et renvoyer un blob. Il s'avère que si j'utilise .NET CORE J'utilise 2.1, vous devez utiliser [FromBody] et comme vous ne pouvez l'utiliser qu'une fois, vous devez créer un viewmodel pour contenir les données.
Récapitulez le contenu comme ci-dessous,
var params = {
"IDs": IDs,
"ID2s": IDs2,
"id": 1
};
Dans mon cas, j'avais déjà json'd les tableaux et passé le résultat à la fonction
var IDs = JsonConvert.SerializeObject(Model.Select(s => s.ID).ToArray());
Appelez ensuite XMLHttpRequest POST et stringify l'objet
var ajax = new XMLHttpRequest();
ajax.open("POST", '@Url.Action("MyAction", "MyController")', true);
ajax.responseType = "blob";
ajax.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
ajax.onreadystatechange = function () {
if (this.readyState == 4) {
var blob = new Blob([this.response], { type: "application/octet-stream" });
saveAs(blob, "filename.zip");
}
};
ajax.send(JSON.stringify(params));
Alors ayez un modèle comme celui-ci
public class MyModel
{
public int[] IDs { get; set; }
public int[] ID2s { get; set; }
public int id { get; set; }
}
Passez ensuite en Action comme
public async Task<IActionResult> MyAction([FromBody] MyModel model)
Utilisez ce module complémentaire si vous renvoyez un fichier
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js"></script>
application/x-www-form-urlencoded
aussi si j'utilise stringify, quel est l'intérêt d'utiliserapplication/json
? :)