2014-01-15 2 views
0

Я работаю над WebAPI.удаление продукта по id в webapi

Я хотел бы удалить продукт по 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

Можете ли вы разместить свой репозиторий.Remove() код? – usp

+0

Удалены ли они из db или ui? pop удаляет элементы из массива, поэтому 'self.products.pop (новый ProductViewModel (продукт));' не имеет смысла. Используйте push для добавления элементов. Также нет вызова в веб-api для удаления продукта, например. '$ .ajax ({url: '/ api/products /' + id, type: 'DELETE'})' –

+0

Привет, я фактически удаляю из массива/ui, а не из базы данных. – user3156220

ответ

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 --> 
+0

Привет, Сначала у меня есть модель продукта. жаль об этом. действительно взгляните на код, только что отредактировал его – user3156220

Смежные вопросы