我无法在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");} })
控制器方法
[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数组参数有哪些更改。
答案 0 :(得分:7)
请尝试以下代码:
声明模型方法,如下所示:
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.
}
这是预期的结果:
答案 1 :(得分: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 opertion.
}
这样你就不必创建另一个类来保存列表对象,就像在Veera的答案中一样。
答案 2 :(得分:1)
尝试这样:
$.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.
}