.net 获取json前端数据

来源:互联网 发布:oracle drop数据恢复 编辑:程序博客网 时间:2024/05/22 17:08

1.需求
允许客户在客户端对数据进行修改,以json字符串的形式传入后端并处理,插入数据库。

2解决方法
2.1前端构建json字符串

<script>        function save_data() {            var type = "Eva_Para_Info";            var val = $('.td1');            var year = $('select').eq(0).find('option:selected').text();            var season = $('select').eq(1).find('option:selected').text();            var j = [];            //var row = {};            for (var i = 0; i < val.length; i = i + 2) {                var row = {};                row.EVA_YEAR = year;                row.EVA_SEASON = season;                row.ROLE = val.eq(i).text();                row.WEIGHT = val.eq(i + 1).text();                j.push(row);            }            $.ajax({                type: 'post',                url: '../new/ajax/ajaxHander.aspx?type=' + type,                data: JSON.stringify(j),                dataType: 'json',                headers: {                    Accept: "application/json",                    "Content-Type": "application/json"                },                processData: false,                cache: false,                success: function (reg) {                    alert(reg);                },                error: function () {                    alert("发生未知错误!");                }            });        }    </script>

2.2后端接受字符串并处理

private string _response = string.Empty;private string _type = string.Empty;private Test_BUL.sys_Common common = new Test_BUL.sys_Common();    Save_Eva_Para_Info(Str)public void Save_Eva_Para_Info(string Str) {        //Eva_Para_Info data = JsonConvert.DeserializeObject<Eva_Para_Info>(Str);        List<Eva_Para_Info> data = JsonConvert.DeserializeObject<List<Eva_Para_Info>>(Str);        Test_Model.CPCSB MODEL = new Test_Model.CPCSB();        Test_BUL.CPCSB bul = new Test_BUL.CPCSB();        //你可以将下面的内容替换成你的处理代码。。。。。。        foreach(Eva_Para_Info element in data)        {            MODEL.ID = System.Guid.NewGuid().ToString();            MODEL.EVA_YEAR = element.EVA_YEAR;            MODEL.EVA_SEASON = element.EVA_SEASON;            MODEL.TCK_CATE = char.Parse(element.ROLE);            MODEL.WEIGHT = element.WEIGHT;            bul.Add(MODEL);        }        _response = "测评参数已更新!";        Response.Write(_response);    }

2.3后端实体的构建

    public class Eva_Para_Info    {        private int _EVA_YEAR;        public int EVA_YEAR        {            get { return _EVA_YEAR; }            set { _EVA_YEAR = value; }        }        private int _EVA_SEASON;        public int EVA_SEASON        {            get { return _EVA_SEASON; }            set { _EVA_SEASON = value; }        }        private string _ROLE;        public string ROLE        {            get { return _ROLE; }            set { _ROLE = value; }        }        private float _WEIGHT;        public float WEIGHT        {            get { return _WEIGHT; }            set { _WEIGHT = value; }        }    }

3.一些实际的问题和解决方案
3.1首先需要注意的是前端我打注释的 //var row = {}
我一开始是这样写的,但是在实际传送过程中,发现所以的实体都变成了最后一个,原因在于我对js的理解不够深入,插入j的只是row,而并没有与row的内容绑定。
3.2其次注意我在后台处理函数中的注释,如果你要处理一组数据,也就是json实体长这样[{},{},{}],就和我一样处理.但是,如果你要处理的其实只是一个json实体,就要用注释的代码将他转化为一个.net实体。
ps:这里没有交代十分清除,所有笔者再补充一点,就是说如果你只打算传递一个json实体,并不打算传递许多组数据,你其实只需要传递一个{},就可以。
4.一些注意事项
关于.net 前后端数据的交互,还有别的方式,因为笔者并没有亲测所以并没有提交,这里用的是Newtonsoft.Json,所以你需要在添加代码引用 using Newtonsoft.Json;
这是一个引用的.dll文件,我用的是4.0版本的类库,但是我的框架其实是4.5版本的,在这里交代一下,以供读者参考。

原创粉丝点击