#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
}
});
});