繁体   English   中英

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

[英]pass array in javascript object to mvc controller

我有一个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 data),其参数类型为Data,其中包含所有属性:

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

我在控制器中获取data.EmployeeNames为null,这是怎么回事? 你能帮我吗?

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

请注意,jquery ajax调用上的radius:true:

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

资料来源: jQuery.param()文件

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

使用Javascript

$("#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 () {
                    }
                });
            });

控制器/型号

[HttpPost]
public void PostManager(Data  data)
{

}

public class Data
{
    public string Manager { get; set; }
    public int id { get; set; }
    public string[] EmployeeNames { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM