Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.net MVC 5 Modelbinding多个JSON对象(knockoutjs)_C#_Asp.net Mvc_Json_Knockout.js_Model Binding - Fatal编程技术网

C# Asp.net MVC 5 Modelbinding多个JSON对象(knockoutjs)

C# Asp.net MVC 5 Modelbinding多个JSON对象(knockoutjs),c#,asp.net-mvc,json,knockout.js,model-binding,C#,Asp.net Mvc,Json,Knockout.js,Model Binding,嗯。我遇到了一个我无法理解的问题 首先,我尝试将几个ko.observearray作为JSON和modelbinding分别发布到控制器。当我只发布一个,而不在.ajax的数据属性中命名它时,它发布得很好,模型绑定完美 这是我的viewModel中的一个片段,也是我试图发布这两个JSON对象的方式 self.timeRanges = ko.observableArray(); self.geoRequirements = ko.observableArray();

嗯。我遇到了一个我无法理解的问题

首先,我尝试将几个ko.observearray作为JSON和modelbinding分别发布到控制器。当我只发布一个,而不在.ajax的数据属性中命名它时,它发布得很好,模型绑定完美

这是我的viewModel中的一个片段,也是我试图发布这两个JSON对象的方式

        self.timeRanges = ko.observableArray();
        self.geoRequirements = ko.observableArray();

        self.saveWorkWish = function() {


                $.ajax({
                    url: "@Url.Action("SaveWorkWish")",
                type: "POST",
                contentType: 'application/json; charset=utf-8',
                data: {
                    timeRanges: ko.toJSON(self.timeRanges()),
                    geoRequirements: ko.toJSON(self.geoRequirements())
                },

                complete: function (data) {
                    console.log(data);
                }
            });

        };
我的行动

   public JsonResult SaveWorkWish(IList<JSONTimeRanges> timeRanges, IList<JSONGeoRequirements> geoRequirements)
    {

        // do stuff

    }

   public JsonResult SaveWorkWish(IList<JSONTimeRanges> timeRanges)
    {

        // do stuff

    }
public JsonResult SaveWorkWish(IList时间范围)
{
//做事
}
效果很好。

最后,我注意到一件事,可能是错误的原因是:

当我发布示例中的2个JSON时, 这是chrome告诉我的我的帖子: 时间范围=%5B%7B%22开始日期%22%3A%2214-09-2014%22%2C%22结束日期%22%3A%2220-09-2014%22%2C……等等

在工作示例中:

它是一个格式良好且可读的JSON对象。

因此,似乎错误确实是正确的,并且我没有向控制器发送有效的JSON


但是..我做错了什么?

首先尝试将可观察对象转换为JSON,然后将整个对象转换为JSON字符串:

data: JSON.stringify({
    timeRanges: ko.toJS(self.timeRanges()),
    geoRequirements: ko.toJS(self.geoRequirements())
}),
data: JSON.stringify({
    timeRanges: ko.toJS(self.timeRanges()),
    geoRequirements: ko.toJS(self.geoRequirements())
}),