我正在开发一个WebAPI。
我想通过ID删除产品。 但是,使用我的代码,它删除了所有记录。 当我键入id号时,它删除了整个记录,而不是删除id本身。 我可以知道我的代码有什么问题吗? 如何改进它以通过id删除它。
productcontroller.cs
function ProductViewModel(product) {
var self = this;
self.Id = product.Id;
self.Name = product.Name;
self.Price = product.Price;
self.Category = product.Category;
}
self.products = ko.observableArray(); // Contains the list of products
self.product = ko.observable();
self.status = ko.observable();
public void DeleteProduct(int id)
{
Product item = repository.Get(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
repository.Remove(id);
}
.cshtml
// Get delete product
self.remove = function () {
self.products.remove();
$.getJSON("/api/products", function (products) {
$.each(products, function (index, product) {
self.products.pop(new ProductViewModel(product));
})
});
}
productrespository.cs
public void Remove(int id)
{
products.RemoveAll(p => p.Id == id);
}
答案 0 :(得分:0)
根据问题中的评论,我认为你应该有类似的东西。
function ProductsViewModel(){
var self = this;
this.products = ko.observableArray();
this.delete = function (product) {
// remove from the db
$.when($.ajax({ url: '/api/products/' + product.id, type: 'DELETE'}))
.done(function(){
// and then from the ui
self.products.remove(product);
}).fail(function(){
// couldn't remove from the db
alert('failed to remove product');
});
};
}
<!-- ko foreach: products -->
<button data-bind="event: { click: $parent.delete }" />
<!-- /ko -->