Asp.net web api 将JSON数组从Javascript传递到Web API控制器方法

Asp.net web api 将JSON数组从Javascript传递到Web API控制器方法,asp.net-web-api,.net-4.5,arrays,asp.net-apicontroller,Asp.net Web Api,.net 4.5,Arrays,Asp.net Apicontroller,我无法在web api控制器方法(SaveDetails)中获取JSON数组参数 这是我的密码 JavaScript代码: $.ajax( { url : "api/Test/SaveDetails", type : "POST", data : { "employees": [ { "firstName": "

我无法在web api控制器方法(SaveDetails)中获取JSON数组参数
这是我的密码

JavaScript代码:

$.ajax( { url : "api/Test/SaveDetails", type : "POST", data : { "employees": [ { "firstName": "John", "lastName": "Doe" }, { "firstName": "Anna", "lastName": "Smith" }, { "firstName": "Peter", "lastName": "Jones" } ] }, success: function (data) {alert("success");}, error: function () {alert("Error");} })
 public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}
[HttpPost]
public DataSet SaveDetails([FromBody]RootObject Person)
{
    //save opertion.    
}
模型方法:

$.ajax( { url : "api/Test/SaveDetails", type : "POST", data : { "employees": [ { "firstName": "John", "lastName": "Doe" }, { "firstName": "Anna", "lastName": "Smith" }, { "firstName": "Peter", "lastName": "Jones" } ] }, success: function (data) {alert("success");}, error: function () {alert("Error");} })
 public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}
[HttpPost]
public DataSet SaveDetails([FromBody]RootObject Person)
{
    //save opertion.    
}
要在web api方法中获取JSON数组参数,需要做哪些更改。

尝试以下操作:

$.ajax(
    {
        url  : "api/Test/SaveDetails",
        type : "POST",
        contentType : 'application/json',
        data : {
                    "obj":
                    [
                        { "firstName": "John", "lastName": "Doe" },
                        { "firstName": "Anna", "lastName": "Smith" },
                        { "firstName": "Peter", "lastName": "Jones" }
                    ]
                },
        success: function (data) {alert("success");},
        error: function () {alert("Error");}
    })
控制器:

[HttpPost]
public DataSet SaveDetails([FromBody]Models.Person[] obj)
{
    //save opertion.    
}
请尝试以下代码:

声明模型方法,如下所示:

public class Models.employees
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

public class Models.RootObject
{
    public List<employees> employees { get; set; }
}
下面是预期的结果

我在搜索问题的答案时遇到了这个线程,试图将对象的列表/数组传递给web api控制器

详情请点击此链接:

将数据更改为单个匿名对象,而不是原始数组,这样它就可以工作了

因此,在您的情况下,您可以对数据执行以下操作

data : {
                "":
                [
                    { "firstName": "John", "lastName": "Doe" },
                    { "firstName": "Anna", "lastName": "Smith" },
                    { "firstName": "Peter", "lastName": "Jones" }
                ]
            },
在您的Web API控制器中

[HttpPost]
public DataSet SaveDetails(List<Models.Person> obj)
{
    //save operation.    
}
[HttpPost]
公共数据集保存详细信息(列表obj)
{
//保存操作。
}

这样,您就不必创建另一个类来保存Veera回答中的list对象。

您是否尝试将数据发布为JSON(请参阅)?然后在控制器中,您可以使用
[FromBody]
属性从请求主体检索此数据。重要说明:模型类必须具有默认构造函数+公共设置器,否则这将无法工作。