asp. net ядро ​​3.1 не привязывает массив целых чисел к действию - PullRequest
1 голос
/ 20 января 2020

Я хочу связать массив целых чисел на моей веб-странице с действием контроллера. Я пробовал [FromQuery] и [FromBody] в действии, и это не сработало. Я пробовал свойство "Traditional: true" в конфигурации ajax. Что мне не хватает?

$("#saveFavorites").on('click', function () {
    var values = $.map(favoritesDataTable.rows('.selected').data(), function (item) {
        return item[6]*1;
    });
    //console.log(ids);
    $.ajax({
        method: 'POST',
        url: '/Default/SaveFavoritesSelections',
        contentType: 'application/json; charset=utf-8',
        dataType: "json",
        data: JSON.stringify(values)
    });

});

Вот действие контроллера, к которому я хочу привязаться:

[HttpPost]
public IActionResult SaveFavoritesSelections(int[] values)

Используя вкладку сети в Chrome, я могу видеть почтовый запрос, а полезная нагрузка содержит JSON объект с идентификаторами правильно там. Я вижу в браузере, что это массив чисел в JavaScript.

Мне кажется, проблема в том, что asp. net не связывает их. Почему бы нет?

enter image description here

1 Ответ

1 голос
/ 20 января 2020

Если целевой контроллер не является [ApiController], вам придется использовать [FromBody] в параметре полезной нагрузки.

[HttpPost]
public IActionResult SaveFavoritesSelections([FromBody] int[] values)
...