Я реализовал помощник для отображения миниатюр из здесь . Рядом с миниатюрой есть ссылка для удаления, которая вызывает этот контроллер:
// HTTP POST: /Photo/Delete/1
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(int id, string confirmButton)
{
var path = "~/Uploads/Photos/";
Photo photo = photoRepository.GetPhoto(id);
if (photo == null)
return View("NotFound");
FileInfo TheFile = new FileInfo(Server.MapPath(path + photo.PhotoID + ".jpg"));
if (TheFile.Exists)
{
photoRepository.Delete(photo);
photoRepository.Save();
TheFile.Delete();
}
else return View("NotFound");
return View();
}
Если я отключу отображение миниатюр, файл будет удален. В противном случае отправляется ошибка:
System.IO.IOException: процесс не может получить доступ к файлу 'C: \ Documents
и настройки \ или \ Мои документы \ Visual
студия
2008 \ Projects \ CMS \ CMS \ Загрузки \ Фотографии \ 26.jpg»
потому что он используется другим
процесс.
Я также не знаю, правильно ли написана функция удаления моего файла. Поиск в сети, я вижу, что все используют File.Delete(TheFile);
, который я не могу использовать, и я использую TheFile.Delete();
. При использовании File.Delete(TheFile);
я получаю следующую ошибку:
Ошибка 1 'System.Web.Mvc.Controller.File (строка,
строка, строка) 'это метод, который
не действует в данном
контекст C: \ Documents and
Настройки \ или \ Мои документы \ Визуальные
студия
2008 \ Projects \ CMS \ CMS \ Controllers \ PhotoController.cs 109 17 CMS
Я что-то здесь упускаю?