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 スタイルを使用して、ギフトの動的リストを作成しています。

この例は、行を「削除」する方法を示しています。これにより、ページから行が削除され、正しいギフトがコントローラーに送信されます。

誕生日/ギフトを更新すると、新しいものはすべて適切に更新されますが、削除されたものはまだそこにあります。

私の質問は、ギフトを削除するための好ましい方法は何ですか?

私がすでに考えた2つの方法:

  1. DB から誕生日を取得し、必要に応じて削除するギフトを比較します。私はこの考えが好きではありません。
  2. WebApi / Ajax を使用し、ユーザーが削除リンクを押したときにリストと DB から Gift を削除します。これは #1 よりも気に入っていますが、プレゼンテーション レイヤーにビジネス ロジックが入りすぎていませんか?

他の人も同じような問題を抱えていて、私がまだ考えていない巧妙な解決策を持っていると思います。

前もって感謝します!

4

2 に答える 2

2

ギフト API コントローラーを作成します。あなたのIDがどんなタイプのIDでも受け入れるDeleteメソッドを持たせてください。そして、その中で次のようなことをします:

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 に答える