2015-11-06 9 views
0

Я могу загрузить изображение. Но я сделал это без сохранения пути к базе данных. Как я могу это сделать?Как сохранить путь к базе данных? MVC.

Я удалил несколько функций на виду, что код был короче. Надеюсь, что все понято.

Вот что я получил:

МОДЕЛЬ:

 public class Ogloszenie 
    { 
     [Key, ForeignKey("Pojazd")] 
     public int PojazdOgloszenieId { get; set; } 
     public RodzajPaliwa RodzajPaliwa { get; set; } 
     public int RokProdukcji { get; set; } 
     public int MocSilnika { get; set; } 
     public int Przebieg { get; set; } 
     public DateTime DataPrzegladu { get; set; } 
     public DateTime DataUbezpieczenia { get; set; } 
     public string OpisPojazdu { get; set; } 

//path 
     public string Zdjecie { get; set; } 
//path 

     public virtual Pojazd Pojazd { get; set; } 
    } 

CONTROLLER:

 [HttpPost] 
      [ValidateAntiForgeryToken] 
      public ActionResult Create([Bind(Include = "PojazdOgloszenieId,RodzajPaliwa,RokProdukcji,MocSilnika,Przebieg,DataPrzegladu,DataUbezpieczenia,OpisPojazdu,Zdjecie")] Ogloszenie ogloszenie, HttpPostedFileBase file) 
      { 
       if (ModelState.IsValid) 
       { 
        if (file != null) 
        { 
         var fileName = Path.GetFileName(file.FileName); 
         var path = Path.Combine(Server.MapPath("~/Zdjecia/"), fileName); 
         file.SaveAs(path); 

//*********************?????????? Something like this?  
Zdjecie = Url.Content("~/Zdjecia/" + file); 
        } 

        db.Ogloszenia.Add(ogloszenie); 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 

       ViewBag.PojazdOgloszenieId = new SelectList(db.Pojazdy, "ID", "Marka", ogloszenie.PojazdOgloszenieId); 
       return View(ogloszenie); 
      } 

ВИД:

@model AutoMonit.Models.Ogloszenie 

    <h2>Utwórz ogłoszenie</h2> 

    @using (Html.BeginForm("Create", "Ogloszenie", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     @Html.AntiForgeryToken() 

     <div class="form-horizontal"> 
      <hr /> 
      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
      <div class="form-group"> 
       @Html.LabelFor(model => model.PojazdOgloszenieId, "PojazdOgloszenieId", htmlAttributes: new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.DropDownListFor(model => model.PojazdOgloszenieId, null, htmlAttributes: new { @class = "form-control" }) 
        @Html.ValidationMessageFor(model => model.PojazdOgloszenieId, "", new { @class = "text-danger" }) 
       </div> 
      </div> 

*************** 
. 
. 
. 
*************** 

    //FILE UPLOADING 
       <label for="file">Filename:</label> 
       <input type="file" name="file" id="file" /> 



      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-10"> 
        <input type="submit" value="Utwórz" class="btn btn-default" /> 
       </div> 
      </div> 
     </div> 
    } 

    <div> 
     @Html.ActionLink("Wróć", "Index") 
    </div> 
+0

Cześć, Piter. Вы можете написать Zdjecie = "~/Zdjecia /" + имя_файла. Хотя это сделает вашу базу данных связанной с вашей конфигурацией сервера с точки зрения относительного пути к корневой папке изображений. Я бы сохранил только имя_файла и объединил его позже с относительным путем (полученным динамически) в C# – codeRecap

+0

Можете ли вы сказать больше? Я начинаю :( – DiPix

+0

ОК. Сохраните только имя файла, а не полный путь. Позже, когда вам нужно его восстановить, вы можете объединить его с «~/Zdjecia /». В результате у вас будет " ~/Zdjecia/myFileName.txt ", который вы можете использовать на клиентской стороне в качестве URL-адреса изображения. – codeRecap

ответ

0

Хорошо я сделал это (спасибо codeRecap для вдохновения;))

[HttpPost] 
      [ValidateAntiForgeryToken] 
      public ActionResult Create([Bind(Include = "PojazdOgloszenieId,RodzajPaliwa,RokProdukcji,MocSilnika,Przebieg,DataPrzegladu,DataUbezpieczenia,OpisPojazdu")] Ogloszenie ogloszenie, HttpPostedFileBase file) 
      { 
       if (ModelState.IsValid) 
       { 
        if (file != null) 
        { 
         var fileName = Path.GetFileName(file.FileName); 
         var path = Path.Combine(Server.MapPath("~/Zdjecia/"), fileName); 
         file.SaveAs(path); 

ogloszenie.Zdjecie = Url.Content("~/Zdjecia/" + fileName); 

        } 

        db.Ogloszenia.Add(ogloszenie); 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 

       ViewBag.PojazdOgloszenieId = new SelectList(db.Pojazdy, "ID", "Marka", ogloszenie.PojazdOgloszenieId); 
       return View(ogloszenie); 
      } 
Смежные вопросы