0

我的 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。谁能告诉我该怎么做?

4

1 回答 1

0

当您将对象作为 jQuery 的 ajax 负载提交时,它会转换为数据的键/值对。例如,如果这是 $.get 而不是 $.post,你会得到

?name=MyName 等。

这篇文章应该可以为您提供所需的内容:http: //www.intelligrape.com/blog/2010/06/11/jquery-send-json-object-with-an-ajax-request/

我还在这里推荐 json/object 字面量表示法:

var obj = { 名称:“MyName”,HomeCount:56,列表:[“AAA”,“bbb”],孩子:{ 地址:“ccc”,孩子:[ //etc ] } }

有关规范,请参阅 json.org,有关验证,请参阅 jslint.com/jshint.com。

于 2012-07-31T08:16:49.550 回答