可能重复:
Passing a collection of objects to MVC controller using $.post
我有那个班:
public class MyClass
{
public int BookID { get; set; }
public List<SelectedBookFormat> SelectedFormats { get; set; }
public SelectedBasketBook()
{
SelectedFormats = new List<SelectedBookFormat>();
}
}
public class SelectedBookFormat
{
public int ID { get; set; }
public int Quantity { get; set; }
public double Price { get; set; }
}
并采取行动:
public JsonResult Add(MyClass model)
{
...
}
我想从客户端发布该生成的类:
(我生成那个类对象,然后我使用JSON.stringify()方法)
model {"BookID":"1","SelectedFormats":[{"ID":"4","Quantity":"34","Price":"44"},{"ID":"1","Quantity":"1","Price":"11"}]}
JS:
$.post('/Add', {
model : JSON.stringify({ BookID: '@Model.BookID',
SelectedFormats : formatsTab }) },
function(res){}
});
但是传递的对象在服务器端是空的,为什么?
答案 0 :(得分:3)
var data = {};
data.BookId = 4;
var format = { };
format.ID = 3;
format.Quantity = 4;
format.Price = 2.2;
data.SelectedFormats = [];
data.SelectedFormats.push(format);
return $.ajax({
type: 'POST',
url: 'YourController/YourAction',
dataType: 'json',
traditional: true,
data: {
model: data
}
});
对我而言,救世主一直是traditional: true
。
聚苯乙烯。在服务器端,似乎不需要属性,因此您可以将它们更改为字段,因此使用小写字母进行写入。然后它将匹配JS的写作风格,并仍然在服务器端有效。这当然是品味问题。