我的页面是通过windows.open()打开的,(用了ajax技术),页面中有FileUpload控件,我要用它来上传图片, 
但是在调试的时候发现: 
FileUpload1.FileName老是为空,但是在不是用windows.open()打开的页面就可以!请教各位,这是为什么? 
下面是我的前台代码: 
<form id="form1" runat="server" enctype="multipart/form-data" > 
.................. <asp:FileUpload ID="FileUpload1" runat="server" BorderColor="Black" BorderStyle="Solid" 
                        Width="635px" /> 
后台代码: 
if (FileUpload1.HasFile)//这里就为false 
        { 
            string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); 
            if (fileExtension == ".jpg") 
                Fileok = true; 
            if (Fileok) 
            { 
                try 
                { 
                    FileUpload1.PostedFile.SaveAs(Server.MapPath("photo") + "\\" + idcardno + "_" + FileUpload1.FileName); 
                } 
                catch (Exception t) 
                { 
                    Response.Write(t.ToString()); 
                    Response.End(); 
                }                 
            } 
        }

解决方案 »

  1.   

    我的页面是通过windows.open()打开的,(用了ajax技术),页面中有FileUpload控件,我要用它来上传图片,  
    但是在调试的时候发现:  
    FileUpload1.FileName老是为空,但是在不是用windows.open()打开的页面就可以!请教各位,这是为什么?  
    下面是我的前台代码:  
    <form id="form1" runat="server" enctype="multipart/form-data" >  
    ..................  <asp:FileUpload ID="FileUpload1" runat="server" BorderColor="Black" BorderStyle="Solid"  
                            Width="635px" />  
    后台代码:  
    if (FileUpload1.HasFile)//这里就为false  
            {  
                string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();  
                if (fileExtension == ".jpg")  
                    Fileok = true;  
                if (Fileok)  
                {  
                    try  
                    {  
                        FileUpload1.PostedFile.SaveAs(Server.MapPath("photo") + "\\" + idcardno + "_" + FileUpload1.FileName);  
                    }  
                    catch (Exception t)  
                    {  
                        Response.Write(t.ToString());  
                        Response.End();  
                    }                  
                }  
            }
    看了下代码 !很想问下!你这个后台代码是用 JS来调用的吗? 就是你说的哪个AJAX (在客户段通过异步来调用的?)
    如果是像我所说的这样的话!那你这个后台为空就是因为 你在用FileUpload1这个控件的时候你 服务器段并没有捕捉到前台控件内的值! 所以你需要通过 用AJAX调用后台方法的时候把 需要的参数在JS里面取好 然后传过去!
      

  2.   

    在选文件的时候,一定要暂时关闭Ajax功能,不然就会为null状态.
      

  3.   

    asp.net好像是是先刷新页面,再调用它们的方法,
    为空的话一定是页面刷新过了,但fileupload的值没保存下来所到致吧。