将JSON对象列表传递给操作

时间:2012-07-31 07:16:14

标签: javascript asp.net-mvc json asp.net-mvc-2

我的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.有人能说出如何做到这一点吗?

1 个答案:

答案 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进行验证。