记一次 Newtonsoft.Json 巧妙的用法(C#)
2016-06-15 11:54
531 查看
数据添加的功能
有一个表格提交数据如下:
是否选择和文本值。分开保存到数据库太麻烦。取得时候也麻烦
想到了存成json数据。一个字段就可以了。
html代码:
全选:
取值:
结果:
这样。添加的时候。json值就可以一起保存到数据库里
我们再看一下怎么取值:
在控制器里:
在view视图里.我们把 ViewBag.list 数据转换成 List<table_info>
最后,我们来看一下循环出来的界面:
主要用到了。Newtonsoft.Json的反序列化,先把数据存成json保存到数据库。修改的时候。反序列化为list model ,在视图里foreach 。。
还有很多功能也可能用这个思路去实现。
欢迎大家拍砖
有一个表格提交数据如下:
是否选择和文本值。分开保存到数据库太麻烦。取得时候也麻烦
想到了存成json数据。一个字段就可以了。
html代码:
<table class="table"> <tr> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="学费" /> 学费 </p> <input class="form-control cek-0" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="材料费" /> 材料费 </p> <input class="form-control cek-1" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="项目期间活动费" /> 项目期间活动费 </p> <input class="form-control cek-2" type="text"></td> </tr> <tr> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="项目期间住宿费" /> 项目期间住宿费 </p> <input class="form-control cek-3" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="项目期间早餐" /> 项目期间早餐 </p> <input class="form-control cek-4" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="项目期间午餐" /> 项目期间午餐 </p> <input class="form-control cek-5" type="text"></td> </tr> <tr> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="项目期间晚餐" /> 项目期间晚餐 </p> <input class="form-control cek-6" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="项目期间交通费" /> 项目期间交通费 </p> <input class="form-control cek-7" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="生活与数学指导" /> 生活与数学指导 </p> <input class="form-control cek-8" type="text"></td> </tr> <tr> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="签证费" /> 签证费 </p> <input class="form-control cek-9" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="国际往返机票" /> 国际往返机票 </p> <input class="form-control cek-10" type="text"> </td> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="当前接送及大巴费用" /> 当前接送及大巴费用 </p> <input class="form-control cek-11" type="text"></td> </tr> <tr> <td> <p class="title"> <input type="checkbox" class="info-item" data-title="保险费" /> 保险费 </p> <input class="form-control cek-12" type="text"> </td> <td></td> <td></td> </tr> </table>
全选:
//全选反选 $("#sel-all-info").click(function () { var _checked = $(this).prop('checked'); $('.info-item').prop('checked', _checked); });
取值:
var datalist = []; $('.info-item').each(function (k, v) { datalist.push({ "index": k, "prop": $(v).prop('checked'), "val": $(".cek-" + k).val(), "title": $(v).data("title") }); }); console.log(JSON.stringify(datalist));
结果:
这样。添加的时候。json值就可以一起保存到数据库里
我们再看一下怎么取值:
在控制器里:
List<table_info> list = new List<table_info>(); list = JsonConvert.DeserializeObject<List<table_info>>(model.ItemIntro); ViewBag.list = list;
在view视图里.我们把 ViewBag.list 数据转换成 List<table_info>
int index = 0; var list = ViewBag.list as List<table_info>; <table class="table"> <tr> @if (list != null && list.Count() > 0) { foreach (var item in list) { string style_s = ""; index++; if (index % 3 == 0) { style_s = "</tr><tr>"; } <td> <p class="title"> <input type="checkbox" @(item.prop == true ? "checked" : "") class="info-item" data-title="@item.title" /> @item.title </p> <input class="form-control cek-@(index - 1)" type="text" value="@item.val"> </td> @Html.Raw(style_s) } } </tr> </table>
最后,我们来看一下循环出来的界面:
主要用到了。Newtonsoft.Json的反序列化,先把数据存成json保存到数据库。修改的时候。反序列化为list model ,在视图里foreach 。。
还有很多功能也可能用这个思路去实现。
欢迎大家拍砖
相关文章推荐
- 让jsp支持EL
- JS闭包作用及理解
- js中获取时间戳的五种方法
- 项目中jSTL的使用
- JSP之错误信息提示
- 在jsp页面获得url参数的方法
- javascript画直线和画圆的方法(非HTML5的方法)
- jmap | jstack 报错
- js选项卡
- 关于input的file之change事件只第一次有效的问题
- Java,C#,JavaScript命名的一些总结
- js实现文件上传预览功能
- 漫谈JS引擎的运行机制 你应该知道什么
- HTML5 respond.js 解决IE6~8的响应式布局问题
- JavaScript操作 url 中 search 部分方法函数
- JS--遍历对象
- js 中的事件冒泡或事件捕获
- //JSP刷新上层页面
- js当前路径 在静态工程和动态工程的区别
- javascript unit testing