asp.net MVC接收前端传递的复杂json对象的简单处理方法

有时候,我们需要从页面传递一组数据到后台,但同时又需要传递几个独立的参数,这种情况很伤脑筋。

网上有各种各样的说法和办法,但都不好用,或没有说到关键的地方。

还有的建议传字符串后台格式化或解析,也有专门写一个切面程序修改mvc自带的格式化方法的,等等,都不是想要的东东。

我需要的是一个简简单单,不做任何改动就能实现的方法。

今天遇到这个问题,反复调试了好多次,终于找到了最简单的方法,什么都不用改,直接传递,直接接收大笑

现在记录下来,给大家参考参考:

一. 前端js提交方法:

 

    function submit(group, quarter) {//这里只是个例子,不要关注业务,只看提交的数据格式就好
        var list = $('#tttt').find('.on'),
            dt = { 'Quarter': quarter, 'Group': group, 'Streses': [] };
        for (var i = 0; i < list.length; i++) {
            var t = $(list[i]),
                v = parseInt(t.attr('idx') || 0, 10),
                p = t.parent().parent(),
                title = p.children().first().html();
            dt.Streses.push({ 'Name': title, 'Level': v });
        }
        myAjax('/Stress/save', dt, null, function (re) {
            if (re.Code == 'Success') {
                location.href = 'yyyyy';
            }
        });
    }


二.后台action接收方法:

 

 

        [HttpPost]
        public ActionResult Save(StressModel stress)
        {
            //do something...
            return View(ReMsg);
        }

 

 

三.接收参数对象定义:

 

    public class Stress
    {
        public string Name { get; set; }
        public int Level { get; set; }
    }
    public class StressModel
    {
        public int Quarter { get; set; }
        public string Group { get; set; }
        public List<Stress> Streses { get; set; }
    }


看看实际运行的结果:

 

这里需要特别注意的一点就是,.接收对象本身字段可以跟json不完全对应,这点大家都知道,但里面的列表对象,却必须完全对应!

我之前就是卡在这里,导致各种不理解,各种不成功。。。

其实一旦找到规律,真的是很简单,对不对?

下面附上myAjax方法:

function myAjax(action, dt, type, callback) {
    $.ajax({
        url: action,
        type: type || "POST",
        data: dt,
        cache: false,
        success: function (result) {
            callback && callback(result);
        },
        error: function (result) {
            alert('System Error, Please Contact Admin!');
        }
    });
}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页