Ich kämpfte ein paar Tage lang darum, etwas zu finden, das für mich funktionieren würde, da ich mehrere Arrays von IDs passierte und einen Blob zurückgab. Wenn Sie .NET CORE verwenden, stellt sich heraus, dass Sie 2.1 verwenden. Sie müssen [FromBody] verwenden und können es nur verwenden, wenn Sie ein Ansichtsmodell zum Speichern der Daten erstellen müssen.
Schließen Sie den Inhalt wie unten ab.
var params = {
"IDs": IDs,
"ID2s": IDs2,
"id": 1
};
In meinem Fall hatte ich die Arrays bereits json'd und das Ergebnis an die Funktion übergeben
var IDs = JsonConvert.SerializeObject(Model.Select(s => s.ID).ToArray());
Rufen Sie dann den XMLHttpRequest-POST auf und stringifizieren Sie das Objekt
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));
Dann haben Sie ein Modell wie dieses
public class MyModel
{
public int[] IDs { get; set; }
public int[] ID2s { get; set; }
public int id { get; set; }
}
Dann pass in Aktion wie
public async Task<IActionResult> MyAction([FromBody] MyModel model)
Verwenden Sie dieses Add-On, wenn Sie eine Datei zurückgeben
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js"></script>
application/x-www-form-urlencoded
Auch wenn ich stringify verwende, was ist dann der Sinn zu verwendenapplication/json
? :)