確定。我遇到了一個我無法理解的問題。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我做錯了什麼?