2015-12-21 1 views
-2

Здесь я добавить продукт и путь для сохранения изображения, все работает отлично и путь изображения сохраняютсяКак обновить путь изображения и сохранить его обратно в базу данных

public ActionResult AddProduct(Product p, HttpPostedFileBase prodImg, decimal[] price) 
        { 
         try 
         { 
          string absoluthFolderPath = Server.MapPath("\\Images"); 
          string pathOfImage = System.IO.Path.GetExtension(prodImg.FileName); 
          string newFileName = Guid.NewGuid() + pathOfImage; 
          absoluthFolderPath += "\\" + newFileName; 
          prodImg.SaveAs(absoluthFolderPath); 

          string relitivePath = @"\Images\" + newFileName; 
          p.ImagePath = relitivePath; 
          p.Blocked = false; 
          new ProductsBL().AddProduct(p); 
          ViewData\["msg"\] = "Successfuly"; 
         } 
         catch(Exception ex) 
         { 

         } 
         ModelState.Clear(); 
         return View(); 
        } 

При попытке обновить путь изображения он дает мне ошибку показано на скриншоте

public ActionResult Update(Product modifieDetails, HttpPostedFileBase updImg) 
      { 
       string absoluthFolderPath = Server.MapPath("\\Images"); 
       string pathOfImage = System.IO.Path.GetExtension(updImg.FileName); 
       string newFileName = Guid.NewGuid() + pathOfImage; 
       absoluthFolderPath += "\\" + newFileName; 
       updImg.SaveAs(absoluthFolderPath); 

       string relitivePath = @"\Images\" + newFileName; 
       modifieDetails.ImagePath = relitivePath; 
       modifieDetails.Blocked = false; 
       new ProductsBL().UpdateProduct(modifieDetails); 
       return RedirectToAction("ListProduct"); 
      } 

[1]: http://i.stack.imgur.com/wgE88.png 
+0

Добро пожаловать в SO! Пожалуйста, будьте более конкретны с нашим вопросом. Чего вы ожидали? Были ли сообщения об ошибках? – Marijn

+0

Вопрос в том, что он хочет обновить его и сохранить обратно в базу данных, что в этом смущает? ИМО, этот вопрос в порядке. – Jasmine

ответ

1

Вы должны разделить это вверх:

new ProductsBL().AddProduct(p); 

для того, чтобы сохранить обновления объекта обратно в хранилище, вы должны установить «IsModified» в сущности, а затем сохранить контекст. Как и ...

using (ProductsBL context = new ProductsBL()) { 
    var p = (some query to get it from the store); 
    p.ImagePath = relitivePath; 
    p.Blocked = false; 
    p.IsModified = true; 
    context.SaveChanges(); 
} 

Как это, вы создаете новый объект и добавив, что в магазине, а не обновление существующей.

И, если вы кодируете на английском языке, исправьте написание: Изменить, Относительно, абсолютное.

Смежные вопросы