将javascript对象中的数组传递给mvc控制器

时间:2015-12-07 10:25:40

标签: javascript jquery ajax asp.net-mvc

我有一个javascript对象,如:

var data={
 Manager:name,
 ID:id,
 EmployeeNames:arrayEmployees
};

如您所见,name和id是简单的字符串,但EmployeeNames是一个数组对象。我有这样的ajax调用:

 $.ajax({
      type: "POST",
      url: "GetManagerEmployees",
      content: "application/json;",
      dataType: "json",
      data: data,
      success: 
      error: 
});

在控制器中,我有一个方法GetManagerEmployees(数据数据),其参数类型为Data,其中包含所有属性:

public class Data
{
    public string Manager { get; set; }
    public int id { get; set; }
    public List<string> EmployeeNames { get; set; }

我的控制器中的data.EmployeeNames为null,我在这里做错了什么?你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

刚刚创建了一个具有这种结构的项目,并且它正在运作:

注意传统:jquery ajax调用时为true:

  

从jQuery 1.4开始,$ .param()方法递归地序列化深层对象,以适应现代脚本语言和框架,如PHP和Ruby on Rails。您可以通过设置jQuery.ajaxSettings.traditional = true;。

来全局禁用此功能

来源:jQuery.param() Docs

此外,您不需要列表。只需在模型中使用一个简单的字符串数组。

<强>的Javascript

select

<强>控制器/型号

$("#myBtn").click(function () {

                var arrayEmployees = new Array();

                arrayEmployees.push("Name1");

                var data = {
                    "Manager": 'John',
                    "id": 1,
                    "EmployeeNames": arrayEmployees
                };

                $.ajax({
                    type: "POST",
                    traditional:true,
                    url: "PostManager",
                    content: "application/json;",
                    dataType: "json",
                    data: data,
                    success: function () {
                    }
                });
            });