zoukankan      html  css  js  c++  java
  • 通过获取客户端Json数据字符串,反序列化为实体对象的一段代码

    #region 保存候选人数据
            /// <summary>
            /// 保存候选人数据
            /// </summary>
            /// <param name="entity"></param>
            /// <returns></returns>
            [AdminAuthorize]
            [ValidateInput(false)]
            [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Save(matchjob.Domain.Candidate entity)
            {
                if (entity.Id == 0)
                {
                    entity.CreateTime = DateTime.Now;
                    this.CandidateManager.Save(entity);
    
                    var json = Request.Form["candidateItemsJsonValue"];
                    if (String.IsNullOrEmpty(json))
                    {
                        goto LABEL_END;
                    }
    
                    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
                    {
                        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(matchjob.Web.UI.Models.TTTT_A));
                        var a = (matchjob.Web.UI.Models.TTTT_A)serializer.ReadObject(ms);
    
                        foreach (var p in a.Positions)
                        {
                            var item = new matchjob.Domain.CandidateItem();
                            item.Position = p.Name;
                            item.Candidate = entity;
                            item.CreateTime = DateTime.Now;
                            item.UpdateTime = item.CreateTime;
                            CandidateItemManager.Save(item);
    
                            foreach (var u in p.Users)
                            {
                                int Score, Experience, Interest, Salary;
                                Int32.TryParse(u.Score, out Score);
                                Int32.TryParse(u.Experience, out Experience);
                                Int32.TryParse(u.Interest, out Interest);
                                Int32.TryParse(u.Salary, out Salary);
    
                                var item2 = new matchjob.Domain.CandidateUser();
                                item2.CandidateItem = item;
                                item2.Remark = u.Remark;
                                item2.Score = Score;
                                item2.UserInfo = new UserInfo();
                                item2.UserInfo.Id = u.UserInfoId;
                                item2.Experience = Experience;
                                item2.Interest = Interest;
                                item2.Salary = Salary;
                                item2.CreateTime = DateTime.Now;
                                item2.UpdateTime = item.CreateTime;
                                CandidateUserManager.Save(item2);
                            }
                        }
                    }
    
                    LABEL_END:
                    {
    
                    }
                }
                else
                {
                    var model = this.CandidateManager.Get(entity.Id);
                    model.CompanyName = entity.CompanyName;
                    model.ValidateCode = entity.ValidateCode;
    
                    this.CandidateManager.Update(model);
    
                    var json = Request.Form["candidateItemsJsonValue"];
                    if (String.IsNullOrEmpty(json))
                    {
                        goto LABEL_DEL;
                    }
    
                    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
                    {
    
                        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(matchjob.Web.UI.Models.TTTT_A));
                        var a = serializer.ReadObject(ms) as matchjob.Web.UI.Models.TTTT_A;
    
                        foreach (var p in a.Positions)
                        {
                            var item = new matchjob.Domain.CandidateItem();
                            var delUsers = new List<matchjob.Domain.CandidateUser>();
                            item.Id = p.Id;
                            item.Position = p.Name;
                            item.Candidate = model;
    
                            if (p.Id != 0)
                            {
                                item = CandidateItemManager.Get(p.Id);
                                item.Position = p.Name;
                            }
    
                            if (p.Id != 0)
                            {
                                item.UpdateTime = DateTime.Now;
                                CandidateItemManager.Update(item);
    
                                delUsers = item.CandidateUsers.Where(CUser => !p.Users.Contains(new Models.TTTT_C { UserInfoId = CUser.UserInfo.Id }, new CandidateUserComparer())).ToList();
                            }
                            else
                            {
                                item.CreateTime = DateTime.Now;
                                item.UpdateTime = item.CreateTime;
                                CandidateItemManager.Save(item);
                            }
    
                            ///更新和增加User
                            foreach (var u in p.Users)
                            {
                                int Score, Experience, Interest, Salary;
                                Int32.TryParse(u.Score, out Score);
                                Int32.TryParse(u.Experience, out Experience);
                                Int32.TryParse(u.Interest, out Interest);
                                Int32.TryParse(u.Salary, out Salary);
    
                                var item2 = new matchjob.Domain.CandidateUser();
                                item2.CandidateItem = item;
                                item2.Remark = u.Remark;
                                item2.Score = Score;
                                item2.UserInfo = new UserInfo();
                                item2.UserInfo.Id = u.UserInfoId;
                                item2.Id = u.Id;
                                item2.Experience = Experience;
                                item2.Interest = Interest;
                                item2.Salary = Salary;
    
                                if (u.Id != 0)
                                {
                                    item2 = CandidateUserManager.Get(u.Id);
    
                                    item2.CandidateItem = item;
                                    item2.Remark = u.Remark;
                                    item2.Score = Score;
                                    item2.Experience = Experience;
                                    item2.Interest = Interest;
                                    item2.Salary = Salary;
                                }
    
                                if (u.Id != 0)
                                {
                                    item2.UpdateTime = DateTime.Now;
                                    CandidateUserManager.Update(item2);
                                }
                                else
                                {
                                    item2.CreateTime = DateTime.Now;
                                    item2.UpdateTime = item2.CreateTime;
                                    CandidateUserManager.Save(item2);
                                }
                            }
                            ///删除User
                            foreach (var u in delUsers)
                            {
                                foreach(var f in CandidateForwardUserManager.GetByCandidateUserId(u.Id))
                                {
                                    CandidateForwardUserManager.Delete(f.Id);
                                }
                                CandidateUserManager.Delete(u.Id);
                            }
                        }
                    }
    
                    LABEL_DEL:
                    ///删除已经移出的职位数据
                    foreach (var itemid in Request.Form["candidateItemsDel"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        var users = CandidateUserManager.GetsByCandidateItemId(Convert.ToInt64(itemid));
    
                        for (int k = 0; k < users.Count; k++)
                        {
                            ///先删除关联对象
                            foreach (var f in CandidateForwardUserManager.GetByCandidateUserId(users[k].Id))
                            {
                                CandidateForwardUserManager.Delete(f.Id);
                            }
                            CandidateUserManager.Delete(users[k].Id);
                        }
    
                        ///先删除关联对象
                        foreach (var f in CandidateForwardManager.GetByCandidateItemId(Convert.ToInt64(itemid)))
                        {
                            CandidateForwardManager.Delete(f.Id);
                        }
                        CandidateItemManager.Delete(Convert.ToInt64(itemid));
                    }
                }
    
                return Json(new { IsSuccess = true, Message = "保存成功" }, "text/plain", JsonRequestBehavior.AllowGet);
            }
            #endregion

        public class TTTT_e
        {
            public TTTT_B[] Positions { get; set; }
        }
    
        public class TTTT_B
        {
            public long Id { get; set; }
            public String Name { get; set; }
            public TTTT_C[] Users { get; set; }
        }
    
        public class TTTT_C
        {
            public long Id { get; set; }
            public long UserInfoId { get; set; }
            public String Score { get; set; }
            public String Remark { get; set; }
            public String Name { get; set; }
    
            public String Experience { get; set; }
            public String Interest { get; set; }
            public String Salary { get; set; }
        }
    
    
    
     
  • 相关阅读:
    自动检查出修改的代码 shell 做升级包 供观摩
    mysql 复制数据库
    docker 容器 日志占用空间过大问题处理
    react native ios启动指定模拟器
    React-Native Navigator-this.props.navigation....
    react-native 适配问题
    vsCode 开发微信小程序插件
    React-Native Navigator 过渡动画卡顿的解决方案
    JavaScript运行机制
    npm install Unexpected token in JSON at position XXX
  • 原文地址:https://www.cnblogs.com/hznet/p/4331714.html
Copyright © 2011-2022 走看看