我这样想:
$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中删除删除操作。但这不起作用......我不知所措......
答案 0 :(得分:0)
我认为发送参数作为查询字符串将起作用。请尝试以下代码
$http.delete('../Category/Delete?categoryId='+30)
在动作控制器中使用[HttpDelete]
答案 1 :(得分:0)
有两种解决方案。
首先,保持Web Api不变并更改角度:
$http.delete('/Category/Delete/' + categoryId)
原因:WebApi在路由表中有/Category/Delete/{categoryId:int}
的条目,这将使我们的路由需要/
和参数值。
其次,保持角度相同并更改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