diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js index 532aa1af71..bde4937822 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js @@ -126,20 +126,29 @@ }); } + var getNames = function (index, variable) { + var name = ''; + for (var i = 0; i <= index; i++) { + if (i == 0) { + name = variable + '[' + i + ']' + } else { + name += '][' + variable + '[' + i + ']' + } + } + return name; + } + data.map(function (x) { - //TODO: improve mapping. it only supports one level deep object. var names = x.name.split("."); - if (names.length === 1 && !obj[names[0]]) { - obj[names[0]] = x.value; - } - else if (names.length === 2) { - if (!obj[names[0]]) { - obj[names[0]] = {}; - } - if (!obj[names[0]][names[1]]) { - obj[names[0]][names[1]] = x.value; + for (var i = 0; i < names.length; i++) { + if (eval('!obj[' + getNames(i, 'names') + ']')) { + eval('obj[' + getNames(i, 'names') + '] = {}'); } } + + if ($.isEmptyObject(eval('obj[' + getNames(names.length - 1, 'names') + ']'))) { + eval('obj[' + getNames(names.length - 1, 'names') + '] = x.value'); + } }); return obj;