好吧,我找不到任何與我確切的問題,所以希望有人可以填補我這一點。我正在使用ASP.NET MVC 4(定位於4.5.1 Fx)並使用KO 3.0和最新的jQuery。我有一個比它所表示的.NET模型更多的屬性的KO模型(2個只在視圖中需要計算的觀察值,而不在後端)。該場景是用戶進行一些更改並點擊保存按鈕。這會調用KO VM中的一個方法,該方法使用jQuery將其發送回服務器並保存更改。 的控制方法看起來像這樣:
public void Post(Profile profile)
{
var modifiedDate = DateTime.UtcNow;
var existingProfile = db.Profiles.FirstOrDefault(x => x.Id == profile.Id);
...
db.SaveChanges();
}
我的KO方法看起來像這樣:
self.updateProfile = function (profile) {
$.post("/api/profile", profile, function() {
alert('saved');
});
};
現在,這工作得很好,但如果我試圖改變使用$ AJAX方法(這是什麼我想要更好的糧食控制),它失敗了。
$.ajax({
url: "/api/profile",
type: "post",
dataType: "json",
data: {
profile: profile
},
success: function() {
alert('saved');
}
});
在控制器方法的目的簡檔未綁定到由$ AJAX方法所發送的數據。我不確定爲什麼,因爲$ post只是$ ajax的高級抽象。任何幫助,將不勝感激。
打開調試控制檯,兩個請求標頭有什麼不同? – Jasen
現在使用Fiddler 4中的WebForms Inspector查看2個不同的請求,我發現$ post方法的值爲Id:value,OwnerId:value等,其中$ ajax方法具有profile [Id]:value,個人資料[OwnerId]:值。很明顯,這是問題。 $ post方法做了什麼,我需要在$ ajax中複製? – Shaggy13spe