Как передать массив объектов в список webAPI

У меня есть базовый HTML, который вызывает функцию WebAPI, используя jQuery ajax call. HTML отправляет массив объектов, которые должны быть сопоставлены с параметром функций, который я получаю как СПИСОК. Если я удаляю массив и отправляю только 1 объект, а также удаляю список из функции, то мой код работает, и объект успешно передается параметру.

Код JavaScript выглядит следующим образом:

    function Call_Service() {
var input =
{
    STATUS: "MY New Status",
    CATEGORY: "My Value"
};

var input2 =
{
    STATUS: "MY New Status2",
    CATEGORY: "My Value2"
};

var input_array = new Array();
input_array[0] = input;
input_array[1] = input2;

$.ajax({
    type: "POST",
    url: "http://localhost:34989/api/TMSPortal/objectPOC",
    data: input_array,
    success: function (response) {
        alert(response);
    }
});
}

C # WebAPI:

        public Int64 objectPOC(List _Status)
    {

        Int64 retValu = 0;

        for (int i = 0; i < _Status.Count; i++)
        {
            retValu++;
        }

        return retValu;
    }
1
nl ja de
Попробуйте изменить параметр метода objectPOC на TMS_STATUS [] вместо списка.
добавлено автор Kevin Junghans, источник
@KevinJunghans, что не сработало.
добавлено автор nido, источник

2 ответы

Поскольку я узнал, что веб-API в настоящее время не позволяет более одного сложного параметра, поэтому я сделал свою работу следующим образом. Дайте мне знать, если у кого-то есть лучшее решение:

Изменена функция Web-API для получения JObject, а затем извлечена из нее мои сложные объекты. Функции Web-API выглядят следующим образом:

        public Int64 objectPOC(JObject jsonWrapper)
    {

        dynamic jsonValues = jsonWrapper;
        JArray jsonInput = jsonValues.input;
        JArray jsonInput2 = jsonValues.input2;

        List _Status = jsonInput.ToObject>();
        List _Status2 = jsonInput2.ToObject>();


        Int64 retValu = 0;

        for (int i = 0; i < _Status.Count; i++)
        {
            retValu++;
        }

        return retValu;
    }

Ajax Call выглядит следующим образом:

    function Call_Service() {
var input =
{
    STATUS: "MY New Status",
    CATEGORY: "My Value"
};

var input2 =
{
    STATUS: "MY New Status2",
    CATEGORY: "My Value2"
};

var input_array = new Array();
input_array[0] = input;
input_array[1] = input2;

alert(input_array[0].STATUS);

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "http://localhost:34989/api/TMSPortal/objectPOC",
    dataType: "json",
    data: JSON.stringify({
        input: input_array,
        input2: input_array
    }),
    success: function (response) {
        alert(response);
    }
});
}
3
добавлено

Чтобы отправить несколько параметров сложного типа, создайте модель и опубликуйте их как свойства внутри модели. В Web API вы можете иметь только один входной параметр сложного типа из коробки.

0
добавлено
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

All That JS
All That JS
417 участник(ов)

JS на русском

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)