private int Save(string postData, SystemMessages sysMsg, bool checkRequired) { int id = 0; if (!String.IsNullOrWhiteSpace(postData)) { System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); Dictionary<string, object> jsonData = jss.Deserialize<Dictionary<string, object>>(postData) as Dictionary<string, object>; string dataId = Convert.ToString(jsonData["dataId"]); string commonCategoryName = Convert.ToString(jsonData["commonCategoryName"]); string basicInfoCategoryName = Convert.ToString(jsonData["basicInfoCategoryName"]); string processFlowCategoryName = Convert.ToString(jsonData["processFlowCategoryName"]); string bomCategoryName = Convert.ToString(jsonData["bomCategoryName"]); string edmCategoryName = Convert.ToString(jsonData["edmCategoryName"]); string specialCategoryName = Convert.ToString(jsonData["specialCategoryName"]); Int32.TryParse(dataId, out id); Dictionary<string, object> data = jsonData["data"] as Dictionary<string, object>; Dictionary<string, object> yieldData = jsonData["yieldData"] as Dictionary<string, object>; CostingInputDetail ciDetail = new CostingInputDetail(); ciDetail.CommonCategory = new FieldCategory(commonCategoryName); ciDetail.BasicInfoCategory = new FieldCategory(basicInfoCategoryName); ciDetail.ProcessFlowCategory = new FieldCategory(processFlowCategoryName); ciDetail.BOMCategory = new FieldCategory(bomCategoryName); ciDetail.EDMCategories = FieldCategory.GetCategoryByName(edmCategoryName); ciDetail.SpecialCategory = FieldCategory.GetCategoryByName(specialCategoryName); ciDetail.YieldData = yieldData; ciDetail.FillData(data); ciDetail.CheckDataType(sysMsg); if (checkRequired) { ciDetail.CheckRequired(sysMsg); } if (sysMsg.isPass) { using (TScope ts = new TScope()) { try { if (id > 0) { ciDetail.Update(id); } else { id = ciDetail.Add(); } } catch (Exception ex) { ts.Rollback(); sysMsg.isPass = false; sysMsg.Messages.Add("Error", ex.Message); } } } } return id; }