#c# #jquery #asp.net-mvc
#c# #jquery #asp.net-mvc
Вопрос:
Я просто хотел отправить список идентификационных номеров, собранных из значений флажков. Следующий пример кода, который я уже пробовал, но не работает, контроллер 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:
Здесь много проблем:
-
ticks['Id'] = value
использует один и тот же ключ на каждой итерации. Вы фактически переопределяете значение из предыдущей итерации. -
Однако это не помогло бы, потому что вам нужно опубликовать список, а вы публикуете объект, который выглядит примерно так:
{"Id": 4}
. Это ни в коем случае не список. -
Вы вызываете параметр
groupIds
в js, в то время как контроллер ожидаетdata
.
Итак, вам нужно убедиться, что имена ваших параметров совпадают, и данные, которые вы отправляете, должны выглядеть следующим образом:
[{"Id": 1}, {"Id": 2}, {"Id": 3}]
Вы можете сделать это, если ticks
был массив, и на каждой итерации вставлялся новый объект.
Комментарии:
1. и
this.value
не возвращаетid
элемент2. @demo, спасибо, и это тоже. Хотя я подозреваю, что автору на самом деле нужны значения, а не идентификатор
3. ОК. Хороший ответ. Но можете ли вы сказать мне, даже если я отправлю указанное вами значение на контроллер, он все равно не получит никаких идентификаторов. Нравится
ticks = '[{"Id": 1}, {"Id": 2}, {"Id": 3}]'
4. @johnHuo, пожалуйста, уточните свой вопрос, как вы его отправляете
5. @johnHuo, это не то, что я имел в виду. «Как» означает, как вы используете это новое значение ticks. Скажем, если вы все еще опубликуете его как
groupIds
без переименования параметра контроллера, это все равно не сработает