Я довольно поздно опоздал, но у меня возникли похожие проблемы, и после дня, проведенного здесь после получения множества ответов, я нашел самое простое / легкое решение для передачи одного или нескольких параметров в Web API 2. следующим образом:
Это предполагает, что вы знаете, как настроить контроллер / действие Web API с правильной маршрутизацией, если не обратитесь к: https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with -aspnet-web-api / tutorial-your-first-web-api .
Во-первых, действие контроллера, для этого решения также требуется библиотека Newtonsoft.Json.
[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 "";
}
Клиентская сторона, использующая 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
});
Ключевой проблемой, которую я обнаружил, было убедиться, что вы отправляете только один общий параметр обратно в Web API и убедитесь, что у него нет имени, только значение, { '': dataToSend }
иначе ваше значение будет нулевым на стороне сервера.
При этом вы можете отправить один или несколько параметров в Web API в структуре JSON, и вам не нужно объявлять какие-либо дополнительные объекты на стороне сервера для обработки сложных данных. JObject также позволяет вам динамически перебирать все передаваемые параметры, обеспечивая более легкую масштабируемость, если ваши параметры изменяются со временем. Надеюсь, это поможет кому-то, кто боролся, как я.