#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 == )
{
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 != )
{
item = CandidateItemManager.Get(p.Id);
item.Position = p.Name;
} if (p.Id != )
{
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 != )
{
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 != )
{
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 = ; 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; }
}

 

通过获取客户端Json数据字符串,反序列化为实体对象的一段代码的更多相关文章

  1. C# 请求Web Api 接口,返回的json数据直接反序列化为实体类

    须要的引用的dll类: Newtonsoft.Json.dll.System.Net.Http.dll.System.Net.Http.Formatting.dll Web Api接口为GET形式: ...

  2. C#复杂XML反序列化为实体对象两种方式

    前言 今天主要讲的是如何把通过接口获取到的Xml数据转换成(反序列化)我们想要的实体对象,当然Xml反序列化和Json反序列化的方式基本上都是大同小异.都是我们事先定义好对应的对应的Xml实体模型,不 ...

  3. XML字符串反序列化为实体

    JSON反序列化实体 paydata = StringHelper.Base64ToString(paydata); resInfo = JsonConvert.DeserializeObject&l ...

  4. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...

  5. 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏

    一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...

  6. 将JSON字符串反序列化为指定的.NET对象类型

    目录导航: 前言: 方法一.在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 方法二.直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符 ...

  7. 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service

    引言 前段时间一直在做一个ERP系统,随着系统功能的完善,客户端(CS模式)变得越来越臃肿.现在想将业务逻辑层以下部分和界面层分离,使用Web Service来做.由于C#中通过直接添加引用的方来调用 ...

  8. JDynamic :支持Json反序列化为Dynamic对象

    JDynamic :支持Json反序列化为Dynamic对象   2010年 .NET 4.0 发布前后,从3.5向4.0迁移,那时也有一些异构系统的需求,主要是和PHP打交道,通信使用的HTTP 格 ...

  9. C# Newtonsoft.Json反序列化为dynamic对象之后的使用

    通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...

随机推荐

  1. 经典FormsAuthenticationTicket 分析

    Asp.net中基于Forms验证的角色验证授权 Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多, ...

  2. 常见的 HTTP错误代码大全

    一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 (继续) 请求者应当继 ...

  3. Linux重定向的理解

    /* 重定向的实例 dup2函数 利用filefd来代替STDOUT(标准输出流),write写入filefd的数据,重定向写出到STDOUT中: */ #include <stdio.h> ...

  4. ios优化复制大文件时,如何使内存运用最少且效率最高

    我也是纠结了好几天,我想自己想个办法,但是数据复制不上去,我现在还不明白,如果有人知道我错在哪了,请留言,如果还有更好的方法,请分享共同进步. ____________________________ ...

  5. Oracle什么时候需要Commit

    写完DML语句(update, insert, delete)后,需要手动COMMIT,如果没有COMMIT,更新的内容会被保存到内存中,而不是提交到数据库中,将不会被其他Session(对话)看见. ...

  6. oralce之存储过程

    一:--循环向表emp中插入数据 declare maxnumber ; v_count number; begin v_count :; ..maxnumber LOOP v_count :; in ...

  7. WingIde的快捷键

     tab:自动补全    Alt+1:打开所有折叠    Alt+2:折叠所有classes    Alt+3:折叠所有函数和类    Alt+Backspace:删除光标所在单词的光标前的部分    ...

  8. MySQL 中随机抽样:order by rand limit 的替代方案

    最近由于需要大概研究了一下MYSQL的随机抽取实现方法.举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RA ...

  9. Java操作XML的工具类

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...

  10. Python Opearte SQLAlchemy Do Something

    近段时间在看SQLAlchemy,总之万事开头难,但是么办法. Database Urls The create_engine() function produces an Engine object ...