0

POCOアプローチを使用してアイテムに画像を追加したい. すべてが機能するためには、ビュー/コントローラーを変更する必要があります。

アイテム

namespace POCOExample.Models
{
    public class Item
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Info { get; set; }
        public List<Image> Images { get; set; }
    }
}

画像

namespace POCOExample.Models
{
    public class Image
    {
        public int ID { get; set; }
        public int ItemID { get; set; }
        public Item Item { get; set; }
        public string FileName { get; set; }
    }
}

コントローラーの作成 (POST) アクション

[HttpPost]
public ActionResult Create(Item item, List<HttpPostedFileBase> iamges)
{
    if (ModelState.IsValid)
    {
        // Added code START
        foreach (var image in images)
        {
            item.Images.Add(new Image {
                FileName = Infrastructure.Image.Upload(image) // Returns file name, just what I need
            });
        }
        // Added code END

        db.Items.Add(item);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(item);
}

質問

このコードは機能しますが、これが最も最適な/正しい方法であるかどうか疑問に思いますか?

4

1 に答える 1

1

はい、あなたのアプローチは正しいです。

そして、修正の余地がないので、哲学的なアドバイスをしたいと思います。それが最適かどうかを自問することさえしないでください。この質問への答えは 99% NO ですが、そんなことは気にせず、シンプルで正しく、保守可能なコードを数字のない「最適な」混乱に変えようとは思わないでください。のコードが実際のパフォーマンスの問題を引き起こしています:)

于 2012-09-14T14:00:38.610 に答える