如何将数据集合POST到控制器操作

时间:2014-05-07 10:45:41

标签: ajax asp.net-mvc

我有以下代码将DATA发送到控制器操作并返回纯HTML 我在控制器操作中得到空对象。

        var employees = [
                       { Title: "John", DataType: 1 },
                       { Title: "Anna", DataType: 2 },
                       { Title: "Peter", DataType: 3 }
    ];

    $("#btn-continueedit").click(function () {
        $.ajax({
            type: 'POST', // I tried post also here
            cache: false,
            url:'/user/UserinfoWizard',
               data: { values: employees }, 
            success: function (data) {

                $("#editUserInfo").html(data);

            }
        });
        return false; 
    });

这是我的控制器动作

             [HttpPost]
         public ActionResult UserInfoWizard(List<UserInfoEditDetail> values)
            {
             // I get empty object 'values' here :( 
            }

2 个答案:

答案 0 :(得分:2)

使用ajax调用传递的数据应该是包含要在控制器操作中使用的参数的对象。您的操作需要随数据传递values参数,因此您的数据对象应为data: { values: getSelectedAttributes() }

JavaScript的:

$("#btn-continueedit").click(function () {
    $.ajax({
        type: 'POST',
        //..
        data: { values: getSelectedAttributes() }, //Use the data object with values
        //..
    });
    return false; 
});

C#:

[HttpPost]
public ActionResult UserInfoWizard(object values) // parameter name should match the name passed in data object
{
   //..
}

修改

实际上,您的操作需要一个对象,而您的值是一个数组。我不知道这些值是什么,但在您的操作中,您应该将int[] valuesstring[] values作为参数或您期望的任何其他数组类型。

答案 1 :(得分:0)

$("#btn-continueedit").click(function () {
        $.ajax({
            type: 'GET', // I tried post also here
            cache: false,
            dataType:JSON,
            url:'/user/UserinfoWizard',
            data: JSON.stringify({ data:getSelectedAttributes()}),
            success: function (data) {

                $("#editUserInfo").html(data);

            }
        });
        return false; 
    });

<强>更新

在ajax调用期间传递数据时,它应该是对象的形式,而不是数组