好吧,我找不到任何与我确切的问题,所以希望有人可以填补我这一点。我正在使用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