Ich bin ziemlich spät dran, hatte aber ähnliche Probleme und nach einem Tag, an dem ich viele Antworten hier durchgesehen und Hintergrundinformationen erhalten habe, habe ich die einfachste / leichteste Lösung gefunden, um einen oder mehrere Parameter an eine Web-API-2-Aktion zurückzugeben folgt:
Dies setzt voraus, dass Sie wissen, wie Sie einen Web-API-Controller / eine Web-API-Aktion mit korrektem Routing einrichten. Weitere Informationen finden Sie unter: https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with -aspnet-web-api / tutorial-your-first-web-api .
Zunächst die Controller-Aktion, diese Lösung erfordert auch die Newtonsoft.Json-Bibliothek.
[HttpPost]
public string PostProcessData([FromBody]string parameters) {
if (!String.IsNullOrEmpty(parameters)) {
JObject json = JObject.Parse(parameters);
// Code logic below
// Can access params via json["paramName"].ToString();
}
return "";
}
Client-Seite mit jQuery
var dataToSend = JSON.stringify({ param1: "value1", param2: "value2"...});
$.post('/Web_API_URI', { '': dataToSend }).done(function (data) {
console.debug(data); // returned data from Web API
});
Das Hauptproblem, das ich gefunden habe, war sicherzustellen, dass Sie nur einen einzigen Gesamtparameter an die Web-API zurücksenden und sicherstellen, dass dieser keinen Namen hat, sondern nur den Wert. { '': dataToSend }
Andernfalls ist Ihr Wert auf der Serverseite null.
Damit können Sie einen oder mehrere Parameter in einer JSON-Struktur an die Web-API senden und müssen keine zusätzlichen Objekte serverseitig deklarieren, um komplexe Daten zu verarbeiten. Mit dem JObject können Sie auch alle übergebenen Parameter dynamisch durchlaufen, um die Skalierbarkeit zu vereinfachen, falls sich Ihre Parameter im Laufe der Zeit ändern. Hoffentlich hilft das jemandem, der wie ich Probleme hatte.