Jquery 将js对象层次结构传递给控制器
我有一个模型Jquery 将js对象层次结构传递给控制器,jquery,asp.net-mvc-3,Jquery,Asp.net Mvc 3,我有一个模型 public class Foo{ public int Id{get;set;} public string Name {get; set;} public DateTime Date {get; set;} public bool IsActive {get;set;} public List<Item> Items {get;set;} } public class Item{ public i
public class Foo{
public int Id{get;set;}
public string Name {get; set;}
public DateTime Date {get; set;}
public bool IsActive {get;set;}
public List<Item> Items {get;set;}
}
public class Item{
public int Id {get;set;}
public string Name {get; set;}
public Foo Foo {get;set;}
}
操作方法签名如下所示:
[HttpPost]
public JsonResult SaveFoo(Foo foo) {
// Now. here it passes correct Id, Name, Date and bool parameter
// And even passes the correct number of Foo.Items
// The only thing that bothers me -
// all the properties of every Item is either null or zero!
}
为什么会这样?我做错了什么?如何将对象数组传递给操作?我尝试过使用jquery.serialize()
和serializeArray()
甚至$.toDictionary()
描述的方法
这没有帮助您尝试过JSON请求吗?它可以更好地处理复杂的属性和集合:
var items = new Array();
$('#itemsSelector').each(function () {
items.push({ id: $(this).val(), name: $(this).text() });
}
var id = $('#id').val();
var title = $('#title').val();
var date = $('#dateTimePicker').val();
var isActive = $('#isActive').val();
$.ajax({
url: 'SaveFoo',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
id: id,
name: title,
date: date,
isActive: isActive,
items: items
}),
success: function(result) {
}
});
如果您需要支持较旧的浏览器,您可能需要包含脚本,以便
JSON.stringify
函数能够工作。您尝试过JSON请求吗?它可以更好地处理复杂的属性和集合:
var items = new Array();
$('#itemsSelector').each(function () {
items.push({ id: $(this).val(), name: $(this).text() });
}
var id = $('#id').val();
var title = $('#title').val();
var date = $('#dateTimePicker').val();
var isActive = $('#isActive').val();
$.ajax({
url: 'SaveFoo',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
id: id,
name: title,
date: date,
isActive: isActive,
items: items
}),
success: function(result) {
}
});
如果您需要支持较旧的浏览器,您可能需要包含脚本,以便
JSON.stringify
函数能够工作。而且如果我们从学术角度来看:您的$.ajax和$.post之间有什么区别。只有contentType?@Agzam,对了,我已经更新了答案。对于本机不支持JSON.stringify
方法的旧式浏览器,您需要包含json2.js
脚本。是的,$.post
和$.ajax
之间唯一的区别是后者允许您设置请求内容类型头:contentType
。谢谢。。。你又救了我一天!总有一天我会中几十亿美元的彩票,然后我会和你分享你在stackoverflow上的声誉分数。@Agzam,当我能帮助其他开发人员时,我总是很高兴。如果我们从学术角度来看:你的$.ajax和$.post有什么区别。只有contentType?@Agzam,对了,我已经更新了答案。对于本机不支持JSON.stringify
方法的旧式浏览器,您需要包含json2.js
脚本。是的,$.post
和$.ajax
之间唯一的区别是后者允许您设置请求内容类型头:contentType
。谢谢。。。你又救了我一天!总有一天我会在彩票中赢得几十亿美元,然后我会和你分享你在stackoverflow上的声誉分数。@Agzam,当我能帮助其他开发者时,我总是很高兴的。