2009-10-08 6 views
0

Я использую LINQ для извлечения данных из базы данных, имя переменной относительно ссылки - это «сервис».ASP.Net проверяет, пуст ли FileUpload пуст

upDocument - это идентификатор элемента управления FileUpload.

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

if ((service.image_url != null || service.image_url != "") && 
    (upDocument.FileName.Length != 0 || upDocument.PostedFile.ToString() != "")) 
{ 
    if (File.Exists(System.Web.HttpContext.Current.Server.MapPath(service.image_url))) 
    { 
      File.Delete(System.Web.HttpContext.Current.Server.MapPath(service.image_url)); 
    } 
} 

Проблемы, что у меня есть, что Althought ничего не загружаются в FileUpload файл все еще удален. Я сделал точку останова и проверил ее ... и противоречил тому, что я ожидал от FileName.Length не 0, а опубликованныйFile.ToString() не является "".

Как я могу сделать правильную проверку?

Заранее спасибо.

+1

Ваше первое условие ('service.image_url') должно использовать a и (' && '), а не a (или' '' ''). Однако на самом деле он должен называть 'String.IsNullOrEmpty'. – SLaks

+0

Кстати, 'upDocument.PostedFile.ToString()' всегда будет '' HttpPostedFile'', потому что класс 'HttpPostedFile' не переопределяет' ToString'. Поэтому нет смысла его проверять. Вместо этого вы должны проверить 'HasFile'. – SLaks

ответ

4

Проверьте HasFile свойство, например:

Кстати, внутри страницы ASP.Net, вам не нужно писать System.Web.HttpContext.Current, так что вы можете просто написать Server.MapPath.

+0

thx для подсказки, но это не ответ :( – Marco

+0

Почему это не ответ? – SLaks

+1

Да, его ответ звучал правильно для меня, поэтому вам может потребоваться разъяснить ваш вопрос. – Sterno

0

Ваша проблема заключается в том, что вы удаляете файл, если service.image_url является nullИЛИ если это "". Это условие всегда будет истинным, так как оно не может быть одновременно null и "".

Вы должны написать !String.IsNullOrEmpty(service.image_url), как я писал в своем первом ответе.

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