У меня есть мультиселектор кендо пользовательского интерфейса в сетке кендо пользовательского интерфейса.Он отлично работает при чтении значений из удаленного источника данных, но когда выдает ошибку при обновлении, потому что он отправляет массив множественных значений неожиданным образом.
js код ниже.Метод GetEmployeeTitles возвращает список строк.
var sharedTitleDataSource = new kendo.data.DataSource({
transport: {
read: "./GetEmployeeTitles"
}
});
$("#grid").kendoGrid({
dataSource: {
transport: {
read: {
url: "./GetLaborCodes",
},
update:
{
url: "./UpdateLaborCode",
type: "POST",
},
create:
{
url: "./UpdateLaborCode",
type: "POST",
},
parameterMap: function (data, type) {
console.log(data);
console.log(type);
if (type != "read") {
return data;
}
}
},
schema: {
model: {
id: "LaborCode_ID",
fields: {
LaborCode_Name: { type: "string" },
LaborCode_Titles: {}
}
}
},
},
editable: true,
filterable: true,
sortable: true,
batch: true,
resizable: true,
reorderable: true,
columns: [{
field: "LaborCode_Titles",
template: function (dataItem) {
return dataItem.LaborCode_Titles.join(', ');
},
title: "Titles",
editor: function (container, options) {
$('<select multiple="multiple" name="' + options.field+'"/>')
.appendTo(container)
.kendoMultiSelect({
suggest: true,
dataSource: sharedTitleDataSource,
valuePrimitive: true,
autoWidth: true
});
}
},
{
field: "LaborCode_Name",
title: "Name",
editor: function (container, options) {
var input = $('<textarea maxlength="450" name="' + options.field + '"></textarea>');
input.appendTo(container);
},
template: function (dataItem) {
if (dataItem.LaborCode_Name != null) {
return '<span title="' + dataItem.LaborCode_Name + '">' + dataItem.LaborCode_Name.substring(0, 30) + '...' + '</span>';
}
return '';
}
}
]
});
А вот мой класс viewmodel:
public class LaborCodeViewModel
{
public string LaborCode_Name { get; set; }
public long LaborCode_ID { get; set; }
public string[] LaborCode_Titles { get; set; }
}
И мой метод обновления в бэкенде, ничего особенного, он просто обновляет базу данных:
[HttpPost, ValidateInput(false)]
public JsonResult UpdateLaborCode(LaborCodeViewModel UpdatedM)
{
UpdatedM.LaborCode_ID = RateSheetAppFactory.UpdateInsertNewLaborCode(UpdatedM);
return Json(UpdatedM, JsonRequestBehavior.AllowGet);
}
Проблема заключается в том, что свойство LaborCode_Titles в LaborCodeViewModel равно нулю.Когда я проверяю запрос от инструментов разработчика, данные формы выглядят так:
LaborCode_Name: Project Executive
LaborCode_Titles[]: Sr. Project Manager
LaborCode_Titles[]: Lead Designer
Но это должно быть так:
LaborCode_Name: Project Executive
LaborCode_Titles: [Sr. Project Manager,Lead Designer]
Когда я записываю данные в parameterMapФункция для консоли, нет ничего плохого:
LaborCode_ID: 5
LaborCode_Name: "Project Executive"
LaborCode_Titles: (2) ["Sr. Project Manager", "Lead Designer"]
Как я могу опубликовать LaborCode_Titles в запросе в виде массива?Insead of
LaborCode_Titles []: старший менеджер проектов
я хочу отправить его вот так
LaborCode_Titles: [Sr.Руководитель проекта]