【问题标题】:Getting 400: Bad Request on delete request using asp.net获取 400:使用 asp.net 删除请求的错误请求
【发布时间】:2020-12-28 04:45:25
【问题描述】:

我正在尝试使用帖子 ID 删除帖子 但是每次我尝试删除帖子 400:bad request 都会出现在控制台中

var deletepost=function(deleteid){
    $.ajax({
        
        url:"http://localhost:12091/api/post/"+deleteid,
        method: "DELETE",
        header:"Content-Type:application/json",
        crossdomain: true,
        complete:function(xmlhttp, status){
            if(xmlhttp.status == 200)
            {
                alert("Post Deleted");
            }
            else{
                console.log(xmlhttp.status+":"+xmlhttp.statusText);
                console.log("unsuccessful");
            }
        }
        
    })
}

这就是我的控制器中的内容:

    public IHttpActionResult Delete(int id)
    {
        postRepository.Delete(id);
        return StatusCode(HttpStatusCode.NoContent);
    }

编辑:我使用 Postman 测试了该功能。工作正常

【问题讨论】:

  • 如果您只将id 传递给控制器​​,您可以改用GET 方法
  • @LongLuong 但我想删除帖子。我不需要“DELETE”方法吗?
  • 所以我猜你在控制器中调用你的Delete 是错误的。检查this answer

标签: jquery asp.net rest


【解决方案1】:

您正在使用DELETE HTTP 动词发送 AJAX 请求,因此您需要在控制器中的操作中添加 [HttpDelete] 注释。您还需要将[FromUri] 注释添加到模型绑定器以识别和填充它的参数。试试这个:

var deletepost = function(deleteid) {
  $.ajax({
    url: "http://localhost:12091/api/post/" + deleteid,
    method: "DELETE",
    header: "Content-Type:application/json",
    complete: function(xmlhttp, status) {
      if (xmlhttp.status == 200) {
        alert("Post Deleted");
      } else {
        console.log(xmlhttp.status + ": " + xmlhttp.statusText);
        console.log("unsuccessful");
      }
    }
  })
}
[HttpDelete]
public IHttpActionResult Delete([FromUri]int id) 
{
  postRepository.Delete(id);
  return StatusCode(HttpStatusCode.NoContent);
}

注意在 AJAX 请求中删除了 crossdomain 属性。它与此逻辑无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 2013-06-30
    • 2017-11-27
    • 1970-01-01
    • 2011-03-09
    • 2018-07-08
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多