#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. Java Script基础(七) HTML DOM模型

    一.HTML DOM. HTML DOM的特性和方法是专门针对HTML的,HTML中的每个节点都是一个对象,通过访问属性和方法的方式,让一些DOM操作更加简便,在HTML DOM中有专门用来处理白哦个 ...

  2. mysql数据类型分析

    CHAR, VARCHAR, TEXT CHAR 定长字符串,占用空间大,速度快 VARCHAR 变长字符串,占用空间小,速度慢 CHAR后面的空格会被去掉,VARCHAR不会去掉 TEXT 不能有默 ...

  3. 关于bochs用X11启动的说明

    关于网络上有很多关于 bochs启动时 连接到X Windows 报错: cannot connect to X display . 昨天搞了半天+晚上 + 今天早上 + 直到现在 才搞懂. 主要的原 ...

  4. Oracle数据库作业-6 查询成绩比该课程平均成绩低的同学的成绩表

    33. 查询成绩比该课程平均成绩低的同学的成绩表. select * from score a where a.degree between 0 and( select avg(degree) fro ...

  5. 出现,视图必须派生自 WebViewPage 或 WebViewPage错误解决方法

    遇到这种问题是因为我新建了Areas,在Areas里面建Controllers,Models,Views.所以在View文件夹下面湿没有Web.config文件的. 解决方法:(复制views中的we ...

  6. 常见的Activity Action Intent常量

    Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”. 目标组件一般要通过Intent来声明自己的条件,一般通过组件中的<intent-filter&g ...

  7. 解密FFmpeg播放状态控制内幕

    上一篇文章(http://my.oschina.net/u/2336532/blog/400790)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的 ...

  8. 安装包安装服务,点修复出现的错误”Error 1001:指定的服务已存在“ 解决办法

    安装项目下,右键视图->自定义操作,出现安装.提交.回滚.卸载四个文件夹,右键安装,添加自定义操作,选择安装的服务为输出文件 右键安装输出文件->在condition->Not (I ...

  9. jquery实现点击页面空白隐藏指定菜单

    注意:dmenu是一个div的class名哦 代码如下 复制代码 $('html,body').click(function(e){  if(e.target.id.indexOf("dme ...

  10. Mac下配置cocos2dx2.2.6的Android环境

    最近在学习cocos2dx在MAC上如何打包apk,今天先把安装JDK和ANT的过程记来. 首先,打开终端,输入”java -version” 点击回车后,出现如下提示: 我们的MAC上并没有安装过J ...