Ok so my problem is quite simple but i don't see why database is not accepting my form even if i for me set up everything correctly.
I'd like to ask you , why controller does not want to save image to a folder on my project? I have tried with debugging and it says that property urlFotografije is equal to null.
SOLUTION -- So i made mistake during model creating phase as I put required validation in property "urlFotografije" - this can't be required since every time form will report is as null since it value is not passed on.
Controller -
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "AutomobilId,Marka,Model,ZapreminaMotora,Snaga,Gorivo,Karoserija,urlFotografije,Opis,Cena,Kontakt")] Automobil automobil,
HttpPostedFileBase file)
{
if (file != null)
{
ModelState.AddModelError("file", "niste odabrali sliku");
}
if (ModelState.IsValid)
{
string imageName = System.IO.Path.GetFileName(file.FileName);
string putanja = Server.MapPath("/Images/"+ imageName);
file.SaveAs(putanja);
automobil.urlFotografije = imageName;
try
{
db.Automobili.Add(automobil);
db.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception)
{
ViewBag.Greska = "Greska pri cuvanju podataka";
}
}
return View(automobil);
}
View --
@model WebProdajaAutomobila.Models.Automobil
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<form action="/Automobil/Create" method="post" enctype="multipart/form-data">
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Automobil</h4>
<hr />
<div class="form-group">
<label class="control-label col-md-2" for="Marka">Marka</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-length="Max 30 karaktera" data-val-length-max="30" data-val-required="Unesite marku vozila" id="Marka" name="Marka" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Marka" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Model">Model</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-length="Max 30 karaktera" data-val-length-max="30" data-val-required="Unesite model vozila" id="Model" name="Model" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Model" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="ZapreminaMotora">ZapreminaMotora</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-number="The field ZapreminaMotora must be a number." data-val-required="Unesite zapreminu motora" id="ZapreminaMotora" name="ZapreminaMotora" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="ZapreminaMotora" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Snaga">Snaga</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-number="The field Snaga must be a number." data-val-required="Unesite snagu motora" id="Snaga" name="Snaga" type="number" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Snaga" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Gorivo">Gorivo</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-length="Max 20 karaktera" data-val-length-max="20" data-val-required="Unesite gorivo vozila" id="Gorivo" name="Gorivo" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Gorivo" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Karoserija">Karoserija</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-length="Max 30 karaktera" data-val-length-max="30" data-val-required="Unesite karoseriju vozila" id="Karoserija" name="Karoserija" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Karoserija" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2">Odaberi sliku</label>
<div class="col-md-10">
<input id="File1" type="file" name="file"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Opis">Opis</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-length="Max 100 karaktera" data-val-length-max="100" data-val-required="Unesite opis vozila" id="Opis" name="Opis" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Opis" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Cena">Cena</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-number="The field Cena must be a number." data-val-required="Unesite cijenu" id="Cena" name="Cena" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Cena" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Kontakt">Kontakt</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-number="The field Kontakt must be a number." data-val-required="Unesite kontakt" id="Kontakt" name="Kontakt" type="number" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Kontakt" data-valmsg-replace="true"></span>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>