var formData = $(self.parentRow).find('form').serializeArray();
var calendarAttachment = [];
calendarAttachment[0] = { PKID: 10 };
calendarAttachment[1] = { PKID: 23 };
calendarAttachment[2] = { PKID: 199 };
formData.push({ name: 'CalendarAttachments', value: calendarAttachment });
$.post('/Calendar/Save', formData, function (json) {...}
Имеется следующий код в js. При передаче данных в контроллер не хочет получать значения. Причем не хочет получать именно значения этого массива. При передаче других данных все норм.
public List<EventFileItem> CalendarAttachments { get; set; }
Сверху свойство которое содержит модель.
public class EventFileItem
{
public long PKID { get; set; }
public string Description { get; set; }
public long? CalendarId { get; set; }
public string FilePath { get; set; }
}
Пробовал делать поле PKID и как стринг, но ничего не помогло. ХЕЛП!
Проблема в том, что функция serializeArray
сериализует внутренние массивы не в формате данных формы. Данные отправляются в виде:
А должны приходить в следующем виде:
Для этого данные формы нужно сериализовать в js-объект. Здеь либо добавить свою функцию:
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
И дальше использовать ее
var formData = $(self.parentRow).find('form').serializeArray();
var calendarAttachment = [];
calendarAttachment[0] = { PKID: 10 };
calendarAttachment[1] = { PKID: 23 };
calendarAttachment[2] = { PKID: 199 };
formData['CalendarAttachments'] = calendarAttachment;
$.post('/Calendar/Save', formData, function (json) {...});
Либо просто использовать reduce для массива, при отправке данных:
$.post('/Calendar/Save', formData.reduce(function(previousValue, currentValue) { previousValue[currentValue.name] = currentValue.value; return previousValue; }, {}), function (json) {...})
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
После java асинхронность в js это беда для меня. Суть проблемы: написать функцию, которая проверяет наличие файла, если есть, то true, нет - false.