Я досить запізнився на це, але у мене виникли подібні проблеми, і після дня перегляду багатьох відповідей тут і отримання фону я знайшов найпростіше / легке рішення для повернення одного або декількох параметрів для Web API 2 Action як наступним чином:
Це передбачає, що ви знаєте, як налаштувати контролер / дію веб-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
});
Основна проблема, яку я знайшов, - переконатися, що ви надсилаєте назад лише один загальний параметр назад до веб-API та переконайтесь, що він не має імені, а лише значення, { '': dataToSend }
інакше ваше значення буде на нулі сервера.
За допомогою цього ви можете надіслати один або кілька параметрів веб-API у структурі JSON, і вам не потрібно оголошувати будь-які додаткові серверні об'єкти для обробки складних даних. JObject також дозволяє динамічно переглядати всі параметри, що передаються, що дозволяє легше масштабувати, якщо ваші параметри змінюються з часом. Сподіваюсь, це допомагає комусь, хто боровся, як я.