使用ajax将具有View值的对象传递给ActionResult

时间:2017-08-03 14:55:42

标签: javascript jquery ajax asp.net-mvc

我想从视图向控制器发送一个对象,ajax命中动作结果但数据没有传递给动作结果

查看:

 function submit()
{
    var obj = {};
    obj.PD = getResult('pd');
    obj.MD = getResult('md');
    obj.C = getResult('c');
    obj.ME = getResult('me');
    obj.EE = getResult('ee');
    obj.SED = getResult('sed');
    obj.RT = getResult('rt');
    obj.SEA = getResult('sea');
    $.ajax({
        url: '/Assessment/AssessNow',
        type: 'POST',
        async: false,
        data: '{obj' + JSON.stringify(obj) + '}',
        dataType: 'json',
        success: function (res) {

        },
        error: function (msg) {
        }
    });
    //alert(getResult('pd'));
}

型号:

 public class QAViewModel
    {
        public string C { get; set; }
        public string EE { get; set; }
        public string MD { get; set; }
        public string ME { get; set; }
        public string PD { get; set; }
        public string RT { get; set; }
        public string SEA { get; set; }
        public string SED { get; set; }
    }

控制器: enter image description here

1 个答案:

答案 0 :(得分:2)

提出编辑作为一个好点:

在帖子中你可以像这样传递整个对象:

 function submit()
{
    var obj = {};
    obj.PD = getResult('pd');
    obj.MD = getResult('md');
    obj.C = getResult('c');
    obj.ME = getResult('me');
    obj.EE = getResult('ee');
    obj.SED = getResult('sed');
    obj.RT = getResult('rt');
    obj.SEA = getResult('sea');
    $.ajax({
        url: '/Assessment/AssessNow',
        type: 'POST',
        async: false,
        data: obj,
        success: function (res) {

        },
        error: function (msg) {
        }
    });
    //alert(getResult('pd'));
}

如果你想坚持使用json,那么相应地修改你的ajax调用(你的错误是你构建数据属性的方式:

                $.ajax({
                    url: '/Assessment/AssessNow',
                    type: 'POST',
                    async: false,
                    data: JSON.stringify({obj: obj}),
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (res) {

                    },
                    error: function (msg) {
                    }
                });

此外,根据您对结果所做的操作,您可能需要翻转控制器操作以返回JsonResult(如果您正在执行某些操作(例如返回要加载的部分视图),请忽略):

    [HttpPost]
    public JsonResult Whatever(QAViewModel obj)
    {
        return Json(whatever, JsonRequestBehavior.AllowGet);
    }
相关问题