Javascript 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么?
我有一组数据:Javascript 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么?,javascript,jquery,ajax,asp.net-mvc,http-post,Javascript,Jquery,Ajax,Asp.net Mvc,Http Post,我有一组数据: var myArray = [{"id": 1, "name", "John"},{"id": 2, "name", "Joe"},{"id": 3, "name", "Bill"}] $.post("/MyController/Update", myArray, function (data) { alert("Complete"); }); 下面是我的asp.net-mvc控制器操作 public ActionResult Update(List<
var myArray = [{"id": 1, "name", "John"},{"id": 2, "name", "Joe"},{"id": 3, "name", "Bill"}]
$.post("/MyController/Update", myArray, function (data) {
alert("Complete");
});
下面是我的asp.net-mvc控制器操作
public ActionResult Update(List<Person> people)
{
return Json(new {Success = true});
}
public class Person
{
public int id {get;set;}
public string name {get;set;}
}
但当我查看服务器上的people参数时,我会看到:
关于我这里做错了什么有什么建议吗?您的javascipt对象属性没有索引器,因此您需要使用ajax
contentType:“application/json”
选项并将对象字符串化
var myArray = [{"id": 1, "name", "John"},{"id": 2, "name", "Joe"},{"id": 3, "name", "Bill"}]
$.ajax({
type: 'post',
url: '@Url.Action("Update", "MyController")', // don't hardcode your url's!
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ people: myArray }),
success: function (data) {
....
}
})
旁注。以下对象将发回
var myArray = { people[0].id: 1, people[0].name: "John", people[1].id: 2, people[1].name: "Joe" }
使用
我个人最喜欢的是使用
JSON.NET
(可通过NuGet
获得)
您可以在您的操作中定义它所期望的JObject
或JArray
然后在操作中,您只需将输入转换为预期类型
从js的角度来看,你只是正常地做你的文章
例如:
public ActionResult Update(JArray input)
{
var persons = input.Select(x=>x.ToObject<Person>()) // This will return an `Enumerable<Person>`
//Do your other stuff here
return Json(new {Success = true});
}
public class Person
{
public int id {get;set;}
public string name {get;set;}
}
公共操作结果更新(JArray输入)
{
var persons=input.Select(x=>x.ToObject())//这将返回一个`可枚举变量'`
//在这里做你的其他事情
返回Json(新的{Success=true});
}
公共阶层人士
{
公共int id{get;set;}
公共字符串名称{get;set;}
}
试试这个
首先像这样更改数组
var myArray = [{"id": 1, "name": "John"},{"id": 2, "name": "Joe"},{"id": 3, "name": "Bill"}] ;
然后尝试使用$.ajax()发布
here键的可能重复项是:-data:JSON.stringify({people:myArray}),
public ActionResult Update(JArray input)
{
var persons = input.Select(x=>x.ToObject<Person>()) // This will return an `Enumerable<Person>`
//Do your other stuff here
return Json(new {Success = true});
}
public class Person
{
public int id {get;set;}
public string name {get;set;}
}
var myArray = [{"id": 1, "name": "John"},{"id": 2, "name": "Joe"},{"id": 3, "name": "Bill"}] ;
$.ajax({
url: "/MyController/Update",
type: "POST",
datatype: 'json',
contentType: "application/json",
data: JSON.stringify(myArray),
success: function (data) {
alert("Complete");
}
});