【发布时间】:2014-07-24 11:34:34
【问题描述】:
我不知道,但这对我来说似乎模棱两可。我正在尝试发出一个 DELETE 请求,应用于多个对象,并使用它们的 ID(数组中的 ID)引用。
这是我的控制器:
[HttpDelete]
public void RemoveRoomWithDevices([FromUri]int roomId, [FromBody] int[] userDevicesId)
{ //code
}
这是JS:
function DeleteRoomWithDevices(RoomID, FloorId, userDevicesID) {
$.ajax({
url: "/api/Room/RemoveRoomWithDevices?RoomId=" + RoomID,
type: "DELETE",
dataType: 'json',
contentType: 'application/json',
data: {
userDevicesId: userDevicesID
},
traditional: true,
success: function (data) {//success}
});
这里,在 POST 列中,数组未通过(我正在使用 firebug 进行调试)。当我用type: "POST" 替换类型时,我可以看到数组,但无法执行删除查询。
你有什么建议?
【问题讨论】:
-
我不确定,但我认为
DELETE不应包含请求正文。规范中没有禁止它(w3.org/Protocols/rfc2616/rfc2616-sec9.html),但我过去读过一些东西,控制器只是忽略它。为什么不能在 POST 中执行删除查询?更重要的是,您可以将数组作为 URL 传递 - 如果这样的数组不大。 -
是的,当我这样做时,我收到了这个错误 {"Message":"The requested resource does not support http method 'POST'."}
-
关于删除正文的精彩讨论:stackoverflow.com/questions/14323716/…。如何在 GET(和 DELETE)中传递数组参数:stackoverflow.com/questions/9981330/…
-
@Sahar Ch 将类型
DELETE更改为POST是不够的 - 您应该将操作属性从HttpDelete更改为HttpPost:) -
啊,是的!我怎么错过了!我试试看谢谢