将复杂的JSON对象传递给MVC 3操作

将复杂的JSON对象传递给MVC 3操作,json,asp.net-mvc-3,Json,Asp.net Mvc 3,在MVC 3中,我试图将一个复杂的JSON对象传递给一个操作时,得到了一些奇怪的结果 位置在动作参数模型上填充,但名称和位置不填充 如果我做了ko.toJS(testViewModel),那么名称和位置在那里,但是位置是空的 我正在使用knockout.js: var testViewModel = { Name: ko.observable("Joe Bob"), Locations: ko.observableArray([ { ID:

在MVC 3中,我试图将一个复杂的JSON对象传递给一个操作时,得到了一些奇怪的结果

位置
在动作参数模型上填充,但名称和位置不填充

如果我做了
ko.toJS(testViewModel)
,那么名称和位置在那里,但是位置是空的

我正在使用knockout.js:

var testViewModel = {
        Name: ko.observable("Joe Bob"),
        Locations: ko.observableArray([
            { ID: 1, Name: "Salem, OR" },
            { ID: 2, Name: "Big Bear Lake, CA" },
            { ID: 3, Name: "Big Bear City, CA" }
        ]),
        Position: ko.observable("Manager")
    }
通过jQuery ajax发送:

$.ajax({
            url: "/ClaimsAuthority/Home/TestIt",
            type: "POST",
            data: ko.toJSON(testViewModel),
            success: function (data, status, xhr) {
                //ko.applyBindings(data);
            }
        });
MVC行动:

<HttpPost()>
        Public Function TestIt(model As TestModel) As ActionResult
            Return Json(model)
        End Function

在AJAX请求中,尝试将内容类型设置为
application/json

$.ajax({
    url: '/ClaimsAuthority/Home/TestIt',
    type: 'POST',
    contentType: 'application/json',
    data: ko.toJSON(testViewModel),
    success: function (data, status, xhr) {
        //ko.applyBindings(data);
    }
});

谢谢你,达林!!成功了!我很快就会欠你一杯啤酒的!是否可以以这种方式解析复杂模型,并在控制器操作中将其作为类型化对象接收?因为我正试图做同样的事情,但是对象的集合,尽管有实例,却有空的属性值。@GustavoRubio,是的,可以使用任意复杂的对象和集合。仅循环对象引用不受支持,因为它们不能被JSON序列化。
$.ajax({
    url: '/ClaimsAuthority/Home/TestIt',
    type: 'POST',
    contentType: 'application/json',
    data: ko.toJSON(testViewModel),
    success: function (data, status, xhr) {
        //ko.applyBindings(data);
    }
});