public JsonResult AddControl(string areaAlias, string controlType, int pageId) { var controlId = Guid.NewGuid(); string columns = "6:medium:;6:medium:"; var model = Repository.GetObjectById(pageId); if (model != null && !string.IsNullOrEmpty(controlType) && !string.IsNullOrEmpty(areaAlias)) { // Find Area In Grid/Section or Root foreach (var area in model.Areas) { FindArea(area, areaAlias); } if (AreaResult != null) { var control = new CanvasControl { ControlID = controlId, Type = controlType }; // If control is grid then create area inside it if (controlType == "Grid") { control.Columns = columns; int p = 0; foreach (var column in columns.Split(';').Where(x => !string.IsNullOrEmpty(x))) { string col = column.Split(':')[0]; var area = new CanvasArea {Alias = "grid-" + col + "-" + controlId.ToString() + "-" + p}; control.Areas.Add(area); p++; } } // If control is section then create area inside it if (controlType == "Section") { var area = new CanvasArea {Alias = "section-" + controlId.ToString()}; control.Areas.Add(area); } AreaResult.Controls.Add(control); } // Convert model back to json for saving Repository.SaveJson(model, pageId); } else { // If no area is found, create it var m = new CanvasModel(); var area = new CanvasArea {Alias = areaAlias}; var control = new CanvasControl { ControlID = controlId, Type = controlType }; area.Controls.Add(control); m.Areas.Add(area); Repository.SaveJson(m, pageId); } return Json(new { success = true, controlType = controlType, controlId = controlId.ToString(), pageId = pageId }); }