Sar*_*mar 10 arrays .net-4.5 asp.net-web-api asp.net-apicontroller
我无法在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.
}
Run Code Online (Sandbox Code Playgroud)
模型方法:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在web api方法中获取JSON数组参数有哪些更改.
Vee*_*era 10
请尝试以下代码:
声明模型方法如下:
public class Models.employees
{
public string firstName { get; set; }
public string lastName { get; set; }
}
public class Models.RootObject
{
public List<employees> employees { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
[HttpPost]
public DataSet SaveDetails([FromBody]RootObject Person)
{
//save opertion.
}
Run Code Online (Sandbox Code Playgroud)
这是预期的结果:

我在寻找问题的答案时遇到了这个线程,试图将对象列表/数组传递给 Web api 控制器。
\n\n详细信息请参见此链接:\n https://kwilson.io/blog/post-an-array-of-objects-to-webapi-using-jquery/
\n\n\n\n\n将数据更改为单个匿名对象而不是原始数组,它\xe2\x80\x99 就可以工作。
\n
因此,在您的情况下,您可以对数据执行以下操作
\n\ndata : {\n "":\n [\n { "firstName": "John", "lastName": "Doe" },\n { "firstName": "Anna", "lastName": "Smith" },\n { "firstName": "Peter", "lastName": "Jones" }\n ]\n },\nRun Code Online (Sandbox Code Playgroud)\n\n在你的 Web API 控制器中
\n\n[HttpPost]\npublic DataSet SaveDetails(List<Models.Person> obj)\n{\n //save operation. \n}\nRun Code Online (Sandbox Code Playgroud)\n\n这样,您就不必像 Veera 的答案那样创建另一个类来保存列表对象。
\n