我正在尝试使用 ODATA 对我的 Web API 进行基本的 AJAX PUT 调用。 这真的不应该那么难,我已经有了 POST 和 GET 开始工作,但 PUT 存在问题。 使用 Fiddler,它告诉我:"属性'Id'是对象关键信息的一部分,无法修改。 这是我在我的项目中的内容(与我在小提琴手中放入的内容相同):
$.ajax({
url: url,
type: "PUT",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
"Outcome": callResult,
"CallTimes": timeTried,
}),
success: function (data) {
alert("Saved to database!");
},
error: function (xhr, status, err) {
alert("Failed to save: " + xhr + "n" + status + "n" + err);
}
});
您不会将 Id
属性作为data
(有效负载)的一部分发送。我猜这会导致服务器端的Id
被反序列化为 null
或 0
,这很可能与您url
中的实体键的值不匹配。因此,服务器上的代码认为您正在尝试修改 Id
的值。(有关将实体键与请求有效负载中的 Id
属性进行比较的Put
方法的示例 ASP.NET 请参阅使用 Web API 2.2 创建 OData v4 终结点中的"更新实体"。
尝试将 Id
属性添加到data
,如下所示:
data: JSON.stringify({
"Id": key_value
"Outcome": callResult,
"CallTimes": timeTried,
})
其中key_value
是用作url
中的实体键的值。