Состояние модели недействительно, если в списке более одного элемента - PullRequest
0 голосов
/ 02 августа 2020

Я использую следующий код для получения информации из пользовательского интерфейса. Я использую select2 как Combobox, чтобы пользователь мог выбирать более одного элемента.

var saveObj = {
        
        DiscountRate: $('#discountRate').val(),
        State: $('#isActiveSelect2List').val() == 1 ? true : false,
        AuthorList: $('#authorSelect2List').val(),
        InterpreterList: $('#interpreterSelect2List').val(),
        TagList: $('#tagSelect2List').val()
    };

Я сохраняю эти данные как объект, а затем отправляю данные с помощью ajax. Но если я выберу более одного элемента для select2. Я получаю ошибку в моем контроллере;

Ошибка

Но если я выберу только один элемент для select2, все в порядке, состояние модели истинно. Не знаю, где я ошибаюсь. Есть какие-нибудь советы?

Вот моя модель данных;

    public List<int> AuthorList { get; set; }
    public List<int> InterpreterList { get; set; }
    public List<int> TagList { get; set; }

1 Ответ

0 голосов
/ 02 августа 2020

Вы передаете разделенные запятыми значения списков select2 при публикации данных с ajax. val () возвращает значения в строке, разделенной запятыми, и вам необходимо преобразовать эту строку в массив перед отправкой таких данных:

var authorSelectedList = [];
var interpreterSelectedList= [];
var tagSelectedList= [];
if ($("#authorSelect2List").select2('data').length){
  $.each($("#authorSelect2List").select2('data'), function(key, item){
    authorSelectedList.push(item.text);
  });
}
if ($("#interpreterSelect2List").select2('data').length){
  $.each($("#interpreterSelect2List").select2('data'), function(key, item){
    interpreterSelectedList.push(item.text);
  });
}
if ($("#tagSelect2List").select2('data').length){
  $.each($("#tagSelect2List").select2('data'), function(key, item){
    tagSelectedList.push(item.text);
  });
}
var saveObj = {
    
    DiscountRate: $('#discountRate').val(),
    State: $('#isActiveSelect2List').val() == 1 ? true : false,
    AuthorList: authorSelectedList,
    InterpreterList: interpreterSelectedList,
    TagList: tagSelectedList
};
...