2009-10-08 118 views
0

我正在使用LINQ从DataBase中检索数据,相对于链接的变量名是“service”。ASP.Net检查FileUpload控件是否为空

upDocument是FileUpload控件的Id。

目标是在上传新文件之前删除旧文件。 这是我想出了这个代码:

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被加载到文件上传文件仍然被删除。我做了一个断点,并检查出来......并理解我期待的FileName.Length不是0,并且postingFile.ToString()不是“”。

我该如何做出正确的验证?

在此先感谢。

+1

你的第一个条件('service.image_url')应该使用和('&&'),而不是或('||')。但是,它实际上应该调用'String.IsNullOrEmpty'。 – SLaks 2009-10-08 17:26:39

+0

顺便说一句,'upDocument.PostedFile.ToString()'将始终是'“HttpPostedFile”',因为'HttpPostedFile'类不会覆盖'ToString'。因此,检查它没有意义。您应该检查'HasFile'。 – SLaks 2009-10-08 18:19:41

回答

4

检查HasFile属性,像这样:

顺便说一句,一个ASP.Net页面中,你不需要写System.Web.HttpContext.Current,所以你可以简单地写Server.MapPath

+0

thx的提示,但这不是答案:( – Marco 2009-10-08 17:22:01

+0

为什么不是答案? – SLaks 2009-10-08 17:24:13

+1

是的,他的回答听起来对我来说是正确的,所以你可能需要澄清你的问题。 – Sterno 2009-10-08 17:36:08

0

您的问题是,你删除的文件,如果service.image_urlnullOR,如果它是""。该条件将始终为真,因为它不能同时为null""

你应该写我的第一个答案写的!String.IsNullOrEmpty(service.image_url)