确定。我遇到了一个我无法理解的问题。Asp.net MVC 5 Modelbinding多个JSON对象(knockoutjs)
首先,我尝试后几个ko.observableArrays控制器作为JSON和seperately 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
}
我得到这个异常: 无效的JSON原始:timeRanges。
而有趣的是,当我这样做:
$.ajax({
url: "@Url.Action("SaveWorkWish")",
type: "POST",
contentType: 'application/json; charset=utf-8',
data: ko.toJSON(self.timeRanges()),
complete: function (data) {
console.log(data);
}
});
而
public JsonResult SaveWorkWish(IList<JSONTimeRanges> timeRanges)
{
// do stuff
}
它工作得很好。
最后,我注意到了,很可能是错误的原因的事情是:
当我发布2个Jsons比如上例中, 这是我发布的信息铬告诉我: timeRanges = %5B%7B%22startDate%22%3A%2214-09-2014%22%2C%22 EndDate%22%3A%2220-09-2014%22%2C .....等。
and in工作实例:
它是一种公格式化和可读JSON对象。
所以好像误差确实是正确的,而且我不发送有效的JSON控制器。
But..what我做错了什么?