Я пытаюсь сделать цикл foreach, который принимает все изображение, когда я отлаживаю код, я вижу, что он принимает образы, но не все отправляются в базу данных. Если я выберу 3 изображения, то в базе данных будет всего 2, а третий - только путь, но не изображение.Проблема с контуром foreach через изображение
Может кто-нибудь мне помочь.
Вот мой код в моем фото модели:
public class Photo
{
public int PhotoId { get; set; }
public String ProfileImagePath { get; set; }
public int StudentId { get; set; }
public virtual Student Student { get; set; }
public void SaveImage(HttpPostedFileBase image,
String serverPath, String pathToFile)
{
if (image == null) return;
string filename = Guid.NewGuid().ToString();
ImageModel.ResizeAndSave(
serverPath + pathToFile, filename,
image.InputStream, 200);
ProfileImagePath = pathToFile + filename +
".jpg";
}
}
И вот мой код контроллера:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "StudentId,Name,Adress")] Student student,
HttpPostedFileBase[] image)
{
if (ModelState.IsValid)
{
foreach (HttpPostedFileBase file in image)
{
string filePathToSave = "/ProfileImages/";
photo.SaveImage(file, HttpContext.Server.MapPath("~"), "/ProfileImages/");
photo = new Photo
{
StudentId = student.StudentId,
Student = student,
ProfileImagePath = filePathToSave
};
db.Photos.Add(photo);
}
db.Students.Add(student);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(student);
}
Что-то не так с кодом, который вы указали. Вы вызываете 'photo.SaveImage (..)' перед тем, как объявили 'photo = new Photo()', чтобы исключить. И поскольку 'SaveImage()' устанавливает значение свойства ProfileImagePath', почему вы затем снова устанавливаете его (для другого значения) с помощью 'ProfileImagePath = filePathToSave'? –