C# Asp.net MVC 5 Modelbinding多个JSON对象(knockoutjs)
嗯。我遇到了一个我无法理解的问题 首先,我尝试将几个ko.observearray作为JSON和modelbinding分别发布到控制器。当我只发布一个,而不在.ajax的数据属性中命名它时,它发布得很好,模型绑定完美 这是我的viewModel中的一个片段,也是我试图发布这两个JSON对象的方式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();
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())
}),