从jquery ajax传递列表数据到mvc控制器时获取null

时间:2014-12-30 12:38:47

标签: jquery asp.net-mvc

我在第一次提交时总是在参数中获得空值。进一步提交按钮会给我列表。

JQuery Part:

function passMTMToServer() {
        var MTMData = [];
        $("#tblMtm").children("tbody").children("tr").each(function () {
            var $this = $(this);
            var $tds = $(this).children('td');
            statusID = $tds.eq(1).find('input').val();
            tld = $tds.eq(3).find('input').val();
            order = $tds.eq(5).find('input').val();
            MTMData.push({ st_testID: 0, st_statusID: statusID, tldID: tld, orderBy: order });
        });

        MTMData = JSON.stringify({ 'obj': MTMData });


        $.ajax({
            contentType: 'application/json; charset=utf-8',
            type: 'POST',
            url: '../Status/SaveMTM',
            data: MTMData,
            traditional: true,
            success: function () {
                alert('Data Passed to Server');
            },
            failure: function (response) {
                alert(response);
            }
        });
    }

控制器代码:

public ActionResult SaveMTM(List<MTMStatusModel> obj)
{

    //perform submit in st_test_mtm_status
    return View("SaveTest");
}

2 个答案:

答案 0 :(得分:2)

Ajax请求:

如果您的控制器期望使用不同的名称

,请在发送时为您的参数命名
$.ajax({
        contentType: 'application/json; charset=utf-8',
        type: 'POST',
        url: '../Status/SaveMTM',
        data: {obj: MTMData },
        traditional: true,
        success: function () {
            alert('Data Passed to Server');
        },
        failure: function (response) {
            alert(response);
        }
    });

在控制器:

如果您要向此动作发布内容,请添加[HttpPost]属性

[HttpPost]
public ActionResult SaveMTM(List<MTMStatusModel> obj)
    {

        //perform submit in st_test_mtm_status
        return View("SaveTest");
    }

答案 1 :(得分:0)

请尝试更改传递给ajax的数据,如下所示。

注意:确保您的数据是MTMStatusModel的列表。

$.ajax({
    contentType: 'application/json; charset=utf-8',
    type: 'POST',
    url: '../Status/SaveMTM',
    data: { 'obj' : MTMData},
    traditional: true,
    success: function () {
        alert('Data Passed to Server');
    },
    failure: function (response) {
        alert(response);
    }
});