#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. 【鬼脸原创】github搭建动态网站

    a{ color:blue; font-weight:bold; } #cnblogs_post_body ol li { list-style-type: cjk-ideographic; } p[ ...

  2. iOS - UI - UITextView

    1.UITextView //因为继承于UIScrollView 拥有scrollView的所有属性和方法 //placeholder只有UITextField有,UITextView是没有的.(提示 ...

  3. Oracle 经典语法(三)

    1. 让SELECT TO_CHAR(sal,'L99,999.99') FROM emp WHERE  ROWNUM < 5 输出结果的货币单位是¥和$.SELECT TO_CHAR(sal, ...

  4. maven 添加中央仓库中没有的jar

    jar文件需要放到当前目录下,执行以下命令,设置 groupId,artifactId,version信息,方便项目pom引用 mvn install:install-file -Dfile=xxx. ...

  5. [转]Displaying standard DataTables in MVC

    本文转自:http://stackoverflow.com/questions/2243898/displaying-standard-datatables-in-mvc Controller act ...

  6. codeforces 680C C. Bear and Prime 100(数论)

    题目链接: C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input s ...

  7. vijos 1426

    P1426兴奋剂检查 Accepted 标签:中学生论坛[显示标签]     背景 北京奥运会开幕了,这是中国人的骄傲和自豪,中国健儿在运动场上已经创造了一个又一个辉煌,super pig也不例外…… ...

  8. MarkDown认识与入门

    Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不 ...

  9. ASP.NET自定义错误页面

    ASP.NET自定义错误页面 ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件.Application_Error 事件以及应用程序配置文件 (Web.co ...

  10. hibernate的第一个程序

    #建表语句 create database hibernate; use hibernate; create table user( id int primary key, name varchar( ...