0

有哪些方法可以从集合中删除项目?(我正在使用 MVC 4 和 EF。)

举个例子:

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; }
}

我正在使用编辑可变长度列表、ASP.NET MVC 2 样式来创建礼物的动态列表。

该示例显示了如何“删除”一行。这将从页面中删除该行,并将正确的礼物发送到控制器。

当我更新生日/礼物时,所有新内容都会正确更新,但删除的内容仍然存在。

所以我的问题是删除礼物的一些首选方法是什么?

我已经想到了两种方法:

  1. 从数据库获取生日并根据需要比较移除的礼物。我不喜欢这个想法,因为它看起来很重。
  2. 当用户推送删除链接时,使用 WebApi / Ajax 并从列表和数据库中删除礼物。我比 #1 更喜欢这个,但这是否在表示层中放置了太多的业务逻辑?

我猜其他人也遇到过类似的问题,并且有一个我还没有想到的聪明的解决方案。

提前致谢!

4

2 回答 2

2

制作一个 Gifts 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();
           }
     }
}

确保在您的 JS 删除函数中对此 API 发出 DELETE 请求。Service.DeleteGift(Id)如果你太担心在正确的地方做事,你也可以用一些替换这个方法的主体。

于 2013-04-29T19:47:10.923 回答
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;
        }
    }
于 2013-04-30T08:35:00.580 回答