在DELETE方法中传递POST正文中的整数数组

时间:2014-07-24 11:34:35

标签: c# asp.net arrays ajax

我不知道,但这对我来说似乎含糊不清。我试图发出一个DELETE请求,应用于多个对象,用它们的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"替换类型时,我能够看到数组,但我无法执行删除查询。

你有什么建议?

2 个答案:

答案 0 :(得分:0)

将两个参数与数据一起传递,其名称应与方法的参数匹配:

$.ajax({
        url: "/api/Room/RemoveRoomWithDevices",
        type: "DELETE",
        dataType: 'json',
        contentType: 'application/json',
        data: {
            roomId: RoomID,
            userDevicesId: userDevicesID
        },
        traditional: true,
        success: function (data) {//success}
    });

答案 1 :(得分:0)

"规范没有明确禁止或阻止http正文#34; Is an entity body allowed for an HTTP DELETE request?

对于我自己的意见,删除请求不应该包含任何正文,并且必须指向一个用于删除的资源(/ car表示所有集合/ cars / {id}表示特定实体) 批量删除不是一个明显的主题,您可以查看以下关于它的主题

Patterns for handling batch operations in REST web services?