我的ASP.NET MVC 2项目中有一个这样的模型,
public class HomeModel
{
public string Name { get; set; }
public int HomeCount { get; set; }
private List<string> _list;
public List<string> List
{
get
{
if (_list == null)
{
_list = new List<string>();
}
return _list;
}
set
{
_list = value;
}
}
private List<ChildModel> _children;
public List<ChildModel> Children
{
get
{
if (_children == null)
{
_children = new List<ChildModel>();
}
return _children;
}
set
{
_children = value;
}
}
}
public class ChildModel
{
public string Address { get; set; }
}
和脚本
var obj = new Object();
obj.Name = "MyName";
obj.HomeCount = 56;
obj.List = new Array();
obj.List[0] = "AAA";
obj.List[1] = "bbb";
var child = new Object();
child.Address = "ccc";
obj.Children = new Array();
obj.Children[0] = child;
var child2 = new Object();
child.Address = "ddd";
obj.Children[1] = child2;
jQuery.ajaxSettings.traditional = true
$.post('/Home/Test',obj, function (data) { });
我的问题是甚至字符串列表是在控制器的动作中生成的,对象列表的计数是0.有人能说出如何做到这一点吗?
答案 0 :(得分:0)
当您将对象作为jQuery的ajax有效负载提交时,它会转换为键/值对数据。例如,如果这是$ .get而不是$ .post,你最终会用
名= MYNAME&安培;。等
这篇文章可以帮助您找到您想要的内容: http://www.intelligrape.com/blog/2010/06/11/jquery-send-json-object-with-an-ajax-request/
我还建议使用json / object literal表示法:
var obj = { 名称:“MyName”, HomeCount:56, 列表:[ “AAA”, “BBB”], 儿童:{ 地址:“ccc”, 儿童: //等等 ] } }
请参阅json.org了解规格,并参阅jslint.com/jshint.com进行验证。