【发布时间】:2015-05-19 13:12:07
【问题描述】:
我正在学习 AngularJS 以及如何将它与 ASP.NET Web API 一起使用,我现在正在努力在经理删除一个产品后显示返回的刷新的产品列表。当他成功删除产品时,产品列表将在删除后立即更新。 删除功能运行良好,但删除后,我收到以下错误消息:
我试图按照这个问题HERE中提到的答案,但似乎开发人员从Web API中的删除函数返回了一个与我的情况完全不同的状态。
这是 ProductRepository 类的代码:
public List<T_Product> GetAllProducts()
{
var query = from product in db.T_Product
select product ;
return query.ToList();
}
public List<T_Product> DeleteProduct(int productId)
{
var pro = (from product in db.T_Product
where product .ProductId == productId
select product ).SingleOrDefault();
db.T_Product.DeleteObject(pro);
db.SaveChanges();
return GetAllProducts();
}
这是Web API中删除功能的代码:
public HttpResponseMessage Delete(int id)
{
var products = productRepository.DeleteProduct(id);
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, products);
return response;
}
这里是 AngularJS 控制器代码:
app.controller('productsController', [productsFactory', 'productFactory', function (productsFactory, productFactory) {
var vm = this;
vm.Products = productsFactory.query();
// callback for ng-click 'deleteProduct':
vm.deleteProduct = function (aId) {
productFactory.delete({ id: aId });
vm.Products = productsFactory.query();
};
}]);
这里是 AngularJS 服务代码:
app.factory('productsFactory', function ($resource) {
return $resource('/api/products', {}, {
query: { method: 'GET', isArray: true },
create: { method: 'POST' }
})
});
app.factory('productFactory', function ($resource) {
return $resource('/api/products/:id', {}, {
show: { method: 'GET' },
update: { method: 'PUT', params: { id: '@id' } },
delete: { method: 'DELETE', params: { id: '@id' } }
})
});
我在 IE 9 中使用 F12 调试并捕获了网络数据包,代码返回更新后的列表,但它没有显示在页面中。 为什么?
如何在删除操作成功后立即显示返回的更新产品列表?
【问题讨论】:
-
不是答案,但我认为您最好只从 Delete 操作返回状态代码,如果成功,您可以简单地从客户端模型中删除该项目。 (对不起,如果我遗漏了什么)
标签: c# angularjs asp.net-web-api