Массив опубликован как ноль - PullRequest
0 голосов
/ 04 июля 2018

Я знаю, что у этого вопроса есть некоторые альтернативы в SO, на которые дан ответ, но ни одно из этих решений не помогло мне.

У меня есть массив целых чисел, которые я хочу POST для метода через AJAX. Но почему-то параметр всегда null в контроллере.

Вот мой JS:

function addSelected(cID, pID) {
    var id, idList = [];
    $("#FilteredCategory_" + pID + "_" + cID + " .content ul li a").each(function () {
        id = parseInt(this.className.replace(/[^0-9]/gi, ''), 10);
        idList.push(id);
    });
    $.ajax('@Url.Action("SelectedAdd","Home")', {
        type: "POST",
        traditional: true,
        data: idList,
        success: function (data) {
            alert(data);
        }
    });
}

POST метод в контроллере:

[HttpPost]
public string SelectedAdd(ICollection<int> topicIds)
{
    string res = string.Empty;
    foreach (var id in topicIds)
    {
        res += $"Item in list: '{id}' \n ";
    }
    return res;
}

Любые предложения, почему topicIds всегда nul?

1 Ответ

0 голосов
/ 04 июля 2018

Вам необходимо передать пару имя / значение, которая соответствует имени параметра в вашем методе. Измените вызов ajax на

$.ajax('@Url.Action("SelectedAdd","Home")', {
    type: "POST",
    traditional: true,
    data: { topicIds: idList }, // change
    success: function (data) {
        alert(data);
    }
});
...