2013-04-29 92 views
0

我可以從集合中刪除項目的一些方法是什麼? (我使用MVC 4和EF)實體框架/ MVC從集合中刪除項目

舉個例子:

public class Birthday 
{ 
    public string Name { get; set; } 

    public virtual ICollection<Gift> Gifts { get; set; } 
} 

public class Gift 
{ 
    public string Name { get; set; } 

    public double Price { get; set; } 
} 

我使用Editing a variable length list, ASP.NET MVC 2-style創建禮品的動態列表。

該示例顯示瞭如何「刪除」一行。這將從頁面中刪除該行,並將正確的禮物發送給控制器。

當我更新生日/禮物時,所有新內容都已正確更新,但刪除的內容仍然存在。

所以我的問題是什麼是刪除禮物的一些首選方法?

兩種方法我想已經:

  1. 從DB的生日,並比較禮物根據需要去除。我不喜歡這個想法,因爲它看起來很沉重。
  2. 使用WebApi/Ajax並在用戶按下刪除鏈接時從列表和數據庫中刪除禮物。我比#1更喜歡這個,但是這會在表示層中放置太多業務邏輯嗎?

我在猜測其他人有這個類似的問題,並有一個我還沒有想到的聰明的解決方案。

在此先感謝!

回答

2

製作禮物api控制器。 讓它有一個Delete方法接受你的Id是什麼類型的Id。 而做這樣的事情在裏面:

public class GiftsController: ApiController 
{ 
    public void Delete(Guid Id) 
    { 
      var context = new MyContext(); 
      var giftToDelete = context.Gifts.FirstOrDefault(g=> g.Id == Id); 
      if(giftToDelete != null) 
      { 
       context.Gifts.Remove(giftToDelete); 
       context.SaveChanges(); 
      } 
    } 
} 

確保你做一個DELETE請求到該API中的JS刪除功能。 如果您太在意在正確的地方做事,您也可以用一些Service.DeleteGift(Id)替換此方法的正文。

+0

感謝您的幫助! – Jeff 2013-05-01 01:02:46

0

像這樣:

public class ValuesController : ApiController 
    { 
     private List<string> list = new List<string>{"Item1","Item2","Item3","Item4","Item5"}; 

     // DELETE api/values/5 
     public List<string> DeleteItem(int id) 
     { 
      list.Remove(list.Find((i => i.ToString().Contains(id.ToString())))); 
      return list; 
     } 
    }