【问题标题】:Passing JSON Array from Javascript to Web API Controller method将 JSON 数组从 Javascript 传递到 Web API 控制器方法
【发布时间】:2014-10-21 05:42:06
【问题描述】:

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

JavaScript 代码:

 $.ajax(
    {
        url : "api/Test/SaveDetails",
        类型:“POST”,
        数据 : {
                    “雇员”:
                    [
                        { "firstName": "John", "lastName": "Doe" },
                        {“名字”:“安娜”,“姓氏”:“史密斯”},
                        {“名字”:“彼得”,“姓氏”:“琼斯”}
                    ]
                },
        成功:函数(数据){alert(“成功”);},
        错误:函数(){警报(“错误”);}
    })
    

控制器方法

[HttpPost]
public DataSet SaveDetails(Models.Person[] obj)
{
    //save opertion.    
}

模型方法:

 public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

在 web api 方法中获取 JSON 数组参数需要做哪些更改。

【问题讨论】:

标签: asp.net-web-api .net-4.5 arrays asp.net-apicontroller


【解决方案1】:

试试下面的代码:

如下声明模型方法

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

public class Models.RootObject
{
    public List<employees> employees { get; set; }
}

控制器:

[HttpPost]
public DataSet SaveDetails([FromBody]RootObject Person)
{
    //save opertion.    
}

预期的结果来了:

【讨论】:

  • 重要提示:模型类必须有默认构造函数+公共设置器,否则不起作用。
【解决方案2】:

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

此链接的详细信息: https://kwilson.io/blog/post-an-array-of-objects-to-webapi-using-jquery/

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

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

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.    
}

这样您就不必像 Veera 的回答那样创建另一个类来保存列表对象。

【讨论】:

    【解决方案3】:

    试试这样:

    $.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.    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2013-08-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多