繁体   English   中英

ASP NET MVC HttpDelete和Angular JS $ http

[英]ASP NET MVC HttpDelete and Angular JS $http

我想通过这样做:

$http.delete('/Category/Delete', { params: { categoryId: 30 } })

并在名为Category的控制器内执行操作:

[HttpDelete]
public async Task<CustomResult> Delete(int categoryId)
{
    await this.categoryService.DeleteCategoryAsync(categoryId);

    return this.Json(true);
}

我以为会被调用,但是得到了404响应。

然后,将动作结果转换为[HttpPost]并执行以下操作:

$http.delete('/Category/Delete', { categoryId: 30 })

但是我得到了500回应。 我不确定我应该在这里做什么。 使用HttpDelete我尝试从Angular URL中删除删除操作。 但这是行不通的。。。我很茫然。

我认为发送参数作为查询字符串将起作用。 试试下面的代码

$http.delete('../Category/Delete?categoryId='+30)

并在动作控制器中使用[HttpDelete]

有两种解决方案。

首先,保持Web Api不变并更改角度:

$http.delete('/Category/Delete/' + categoryId)

原因:WebApi在路由表中具有/Category/Delete/{categoryId:int}的条目,这会使我们的路由需要具有/和param值。

其次,保持角度不变并更改Web Api:

[HttpDelete]
public async Task<CustomResult> Delete([FromUri] int categoryId)
{
    await this.categoryService.DeleteCategoryAsync(categoryId);

    return this.Json(true);
}

我在参数中添加了[FromUri]属性,这意味着Web Api将尝试从URI中拉出该参数,看起来像/Category/Delete?categoryId=30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM