Сохранение и обработка модели в представлении для 2 списков моделей

#c# #jquery #model-view-controller

#c# #jquery #model-view-controller

Вопрос:

У меня есть модель MVC, которая будет иметь 2 списка, а также некоторые другие свойства. Список 1 — это список флажков. Список 2 — это список времени начала и окончания. У меня они настроены и работают, но теперь мне нужно иметь возможность добавлять больше данных в список 2, чего я достиг с помощью Jquery, но добавляя в javascript. Это не добавляет его к данным модели. Затем мне нужно опубликовать оба этих списка в действии контроллера, чтобы я мог зациклить их и опубликовать в базе данных (не моя проблема). Мне нужно заполнить отправляемые модели. Я не уверен, как это сделать, и рисую пробел при заполнении второй модели с помощью jquery / js.

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

Я попытался создать частичное представление, содержащее только данные списка моделей, которые в нем представлены, но затем у меня возникла та же проблема с заполнением модели. Я пытался просто сделать это через MVC, но я не сохраняю по ходу дела, я хочу, чтобы клиент мог внести несколько изменений, а затем сохранить. Поэтому он должен быть сохранен в DOM, и для этого я использую таблицу. Я хочу, чтобы эта таблица была данными модели.

Модель

 public List<PersonelList _ViewModel> PersonelList { get; set; }
public List<OutTimesForList_ViewModel> OutTimesList { get; set; }

public DateTime? StartDateTime { get; set; }
public DateTime? EndDateTime { get; set; }
  

Они обнуляемы (datetimes) из-за того, что используемый мной JS средство выбора даты и времени уже показывает время в текстовом поле, если я не отправляю его с нулевым значением.

В представлении они будут вводить время начала и время окончания, затем я хочу, чтобы оно было добавлено в список исходящих, чтобы сообщение дало мне эти данные, заполненные в списке моделей. Список пользователей — это список CB для времени, которое будет добавлено, поэтому, если установлен флажок, добавьте эти времена.

Когда сообщение будет выполнено, оба списка будут отправлены на контроллер, чтобы я мог просматривать и отправлять данные.

Ответ №1:

Попробуйте использовать jQuery ajax post с FormData. При сборе объекта это должно выглядеть так:

 $( "#YourFormId" ).submit(function(event) {
var formData = new FormData($("#YourFormId"))

//todo need to get properties of PersonelList and OutTimesList via jquery

var indexPersonelList = 0;
for(var pair of PersonelList){
    var item = pair[key];
    formData.append("PersonelList["   indexPersonelList   "].Id", item.Id);
    indexPersonelList  ;
}

var indexOutTimesList = 0;
for(var pair of OutTimesList){
    var item = pair[key];
    formData.append("OutTimesList["   indexOutTimesList   "].Id", item.Id);
    indexOutTimesList  ;
}

$.ajax({
       type: 'POST',
       url: '/MyController/MyAction',
       data: formData,

       contentType: false,
       processData: false,
       success: function (data) {
            //some success stuff
       },
       error: function (error) {
            //some error stuff
       }
      }); 
});