记一次 Newtonsoft.Json 巧妙的用法(C#)

数据添加的功能

有一个表格提交数据如下:

是否选择和文本值。分开保存到数据库太麻烦。取得时候也麻烦

想到了存成json数据。一个字段就可以了。

html代码:

  <table class="table">
                                                <tr>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="学费" />&nbsp;&nbsp;学费
                                                        </p>
                                                        <input class="form-control cek-0" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="材料费" />&nbsp;&nbsp;材料费
                                                        </p>
                                                        <input class="form-control cek-1" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="项目期间活动费" />&nbsp;&nbsp;项目期间活动费
                                                        </p>
                                                        <input class="form-control cek-2" type="text"></td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="项目期间住宿费" />&nbsp;&nbsp;项目期间住宿费
                                                        </p>
                                                        <input class="form-control cek-3" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="项目期间早餐" />&nbsp;&nbsp;项目期间早餐
                                                        </p>
                                                        <input class="form-control cek-4" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="项目期间午餐" />&nbsp;&nbsp;项目期间午餐
                                                        </p>
                                                        <input class="form-control cek-5" type="text"></td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="项目期间晚餐" />&nbsp;&nbsp;项目期间晚餐
                                                        </p>
                                                        <input class="form-control cek-6" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="项目期间交通费" />&nbsp;&nbsp;项目期间交通费
                                                        </p>
                                                        <input class="form-control cek-7" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="生活与数学指导" />&nbsp;&nbsp;生活与数学指导
                                                        </p>
                                                        <input class="form-control cek-8" type="text"></td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="签证费" />&nbsp;&nbsp;签证费
                                                        </p>
                                                        <input class="form-control cek-9" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="国际往返机票" />&nbsp;&nbsp;国际往返机票
                                                        </p>
                                                        <input class="form-control cek-10" type="text">
                                                    </td>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="当前接送及大巴费用" />&nbsp;&nbsp;当前接送及大巴费用
                                                        </p>
                                                        <input class="form-control cek-11" type="text"></td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                        <p class="title">
                                                            <input type="checkbox" class="info-item" data-title="保险费" />&nbsp;&nbsp;保险费
                                                        </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" />&nbsp;&nbsp;@item.title
                                                            </p>
                                                            <input class="form-control [email protected](index - 1)" type="text" value="@item.val">
                                                        </td>
                                                        @Html.Raw(style_s)
                                                        }
                                                    }

                                                </tr>

                                            </table>

最后,我们来看一下循环出来的界面:

主要用到了。Newtonsoft.Json的反序列化,先把数据存成json保存到数据库。修改的时候。反序列化为list model ,在视图里foreach 。。
                还有很多功能也可能用这个思路去实现。

欢迎大家拍砖

时间: 2024-10-12 08:37:26

记一次 Newtonsoft.Json 巧妙的用法(C#)的相关文章

Newtonsoft.json.dll的用法

下载地址:http://json.codeplex.com/ static void Main(string[] args) { string jsonTest = "[{'name':'张三','age':20},{'name':'李四','age':19}]"; var stu = JsonConvert.DeserializeObject<List<Student>>(jsonTest); string str = JsonConvert.Serializ

Newtonsoft.Json高级用法

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

Newtonsoft.Json高级用法--转载至 焰尾迭 随笔

本人只做搬运工,以这方便自己学习的态度!以下内容均为拷贝! 如有不适请联系本人! 本文原作者:焰尾迭 本文地址:http://www.cnblogs.com/yanweidie/p/4605212.html#commentform 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机A

Newtonsoft.Json高级用法之枚举中文转义

最近看博客园中 焰尾迭的两篇关于"Newtonsoft.Json高级用法"的文章受到了很多人的评论,一度登入到头条推荐. 今天我就不再重复焰尾迭博文中的一些提过的Newtonsoft.Json的高级用法.大家如果想知道直接去看. Newtonsoft.Json高级用法 再谈Newtonsoft.Json高级用法 我主要说焰尾迭没有提到的用法——枚举中文转义 枚举值序列化问题(摘自焰尾迭段落) public enum NotifyType { /// <summary> //

【Json】Newtonsoft.Json高级用法

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

转:Newtonsoft.Json高级用法

原文地址:http://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据

Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

【转】 Newtonsoft.Json高级用法

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

Json序列化之.NET开源类库Newtonsoft.Json的研究

一.Json简介                                                                                                                    JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在各种网络.平台和程序之间传输.JSON的语法很简单,