Ajax-объект отправки на контроллер не работает - PullRequest
0 голосов
/ 28 марта 2019

Я просто хотел отправить список номеров Id, которые собраны из значений флажков.Следующий пример кода, который я уже пробовал, но не работает контроллер mvc не получает значения Id.Пожалуйста, проверьте код ниже и скажите мне, что я делаю здесь неправильно.

var _groupids = [];
$('input[class="groupids"]:checked').each(function() {
  _groupids.push(this.value);
});

var ticks = {};
$.each(_groupids, function(key, value) {
  ticks['Id'] = value;
});
console.log(ticks);

$.post('/MyController/Create', {
  groupIds: JSON.stringify(ticks)
}).done(function(data) {

});

Модель:

namespace Demo.ViewModels
{
  public class Ppp
  {
    public int Id { get; set; }
  }
}

Контроллер:

[HttpPost]
public ActionResult Create(List<Ppp> data)
{
  //want to get ajax value in `data`
}

Примечание: я также пыталсяудаление JSON.stringify, но все еще не получает никакого значения в контроллере

Я также пытался отправить это значение следующим образом ticks = '[{"Id": 1}, {"Id": 2}, {"Id": 3}]'; и все еще не получает никакого значения в контроллере

1 Ответ

1 голос
/ 28 марта 2019

Здесь много вопросов:

  1. ticks['Id'] = value использует один и тот же ключ на каждой итерации. Вы фактически переопределяете значение из предыдущей итерации.

  2. Однако это не поможет, потому что вам нужно опубликовать список, и вы публикуете объект, который выглядит примерно так: {"Id": 4}. Это не список по каким-либо показателям.

  3. Вы вызываете параметр groupIds в js, в то время как контроллер ожидает data.

Итак, вам нужно убедиться, что имена ваших параметров совпадают, а отправляемые вами данные должны выглядеть так:

[{"Id": 1}, {"Id": 2}, {"Id": 3}]

Вы можете сделать это, если ticks был массивом и вставлял новый объект на каждой итерации.

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