Как передать массив int из jquery ajax в действие asp.net mvc - PullRequest
0 голосов
/ 15 ноября 2018

Я перепробовал много сообщений от stackoverflow, но у меня всегда один и тот же результат.Переданный массив int всегда равен нулю.

Передать массив в mvc Действие через AJAX

Здесь действие asv.net mvc, которое принимает массив int из идентификаторов.

[HttpPost]
public ActionResult Downloads(int[] ids){
    return RedirectToAction("Exports", ids);
}

Это вызов ajax, который отправляет значения.

var url = '@Url.Action("Downloads")';
var values = [1,2,3];
$.ajax({
    url: url,
    type: 'POST',
    dataType: "json",
    contentType: 'application/json; charset=utf-8',
    traditional: true,
    data: JSON.stringify({ids: values })
});

Понятия не имею, что я делаю неправильно.Я передал дату ajax как простой массив: data: values или без stringify, но asp.net mvc никогда не принимает массив int.Кажется, параметр traditional объекта ajax ничего не делает.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Если вы хотите отправлять значения с использованием традиционной кодировки, вам не следует кодировать JSON отправляемые вами данные.Таким образом, удалите вызов JSON.strigify(), а также contentType.Попробуйте это:

$.ajax({
  url: url,
  type: 'POST',
  dataType: "json",
  traditional: true,
  data: { ids: values }
});
0 голосов
/ 15 ноября 2018

Просто удалите JSON.stringify, он будет работать.

[HttpPost]
public JsonResult Test(int[] ids)
{
   return Json("Integers. " + ids);
}

// В Jquery, пожалуйста, поставьте это.

var PostData = {};
PostData.ids = [1, 2, 3, 5];
var ajaxOptions = {
        type: "POST",
        url: '@Url.Action("Test", "Settings")',//Actionname, ControllerName
        data: PostData,
        dataType: "json",
        success: function (result) {
            console.log(result);
        },
        error: function (result) {

        }
};
$.ajax(ajaxOptions);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...