2012-04-05 12 views
0

ファイルアップロード機能の作成が完了しました。画像をデータベースにアップロードする。これはうまくいきます。画像をデータベースにアップロードするための編集

以下のコードは、1つのイメージだけを持つコントローラの短縮バージョンです。

[HttpPost] 
      public ActionResult Create(CarAdvert caradvert, 
       HttpPostedFileBase picture1) 
      { 
       if (ModelState.IsValid) 
       { 

        if (picture1 != null) 
        { 
         string image1 = picture1.FileName; 
         caradvert.Image1 = image1; 
         var image1Path = Path.Combine(Server.MapPath("~/Content/Images"), image1); 
         picture1.SaveAs(image1Path); 
        } 
db.CarAdverts.Add(caradvert); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 

レコードが作成されると、すべてのイメージが正常にアップロードされます。コントローラー内のコードが動作します。問題が発生したときにアップロードした画像を編集しようとしているだけです。画像は保存されません。

[HttpPost] 
      public ActionResult Edit(CarAdvert caradvert, HttpPostedFileBase picture1) 
      { 
       if (ModelState.IsValid) 
       { 

        if (picture1 != null) 
        { 
         string image1 = picture1.FileName; 
         caradvert.Image1 = image1; 
         var image1Path = Path.Combine(Server.MapPath("~/Content/Images"), image1); 
         picture1.SaveAs(image1Path); 
        } 


       db.Entry(caradvert).State = EntityState.Modified; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 

答えて

0

「caradvert」エンティティをDbContextに添付する必要があるかもしれないと思います。編集機能でこれを試してください。私はあなたによく理解していれば、N:それは1でなければなりませんが、関係:1(1またはn:)

db.CarAdverts.Attach(caradvert); // Entity is in Unchanged state 
db.Entry(caradvert).State = EntityState.Modified; 

db.SaveChanges(); 
0

あなたcaradvertオブジェクトは、1のように見えるプロパティImage1を持っています。

したがって、アソシエーションを再作成し、CarAdvertにナビゲーションプロパティImagesを付ける必要があります。その後、新しい画像をこのコレクションに追加するだけです。

関連する問題