[英]Angular JS $http POST not responding on success in ASP.NET MVC
[英]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.