如标题。放在UpdataPanel外面正常。放在里面就得不到值,请各位大虾帮帮忙。

解决方案 »

  1.   

    FileUpload与UpdatePanel不兼容, 网上的解决方案都是使用iframe
      

  2.   

    FileUpload与UpdatePanel不兼容, 网上的解决方案都是使用iframe
      

  3.   

    UpdatePanel里放FileUpload控件,获取不到值的
      

  4.   

    楼上的不懂就别误人子弟了,都扯淡!不可否认,iframe是可以解决这个问题,但是并不是不可以解决,给你们补补课;updatepanel是什么,当你将服务器控件放入到updatepanel里面就意味着这是异步的b/s交互了,既然是异步的,我们知道,就算是异步刷新我们仍然需要向服务器提交请求,服务器接受到请求后就会向请求端做出回应,那么这里就存在一个问题你提交的方式相当于是由updatepanel来代理的你就必须告诉他你要异步提交 还是由某个控件触发来提交,所以 updatepanel有两种触发器 来提供给你,AsyncPostBackTrigger 、PostBackTrigger,如果你页面的提交方式是前者的话,意味着,你的upload控件选取的文件名,在刷新过程中并没有被保存下来,所以当你想要上传的时候已经去不到之前你选取的文件了。说道这里我相信很多朋友心中的疑问也就迎刃而解了。
    解决办法;在]<Triggers></Triggers>之间加入]<asp:PostBackTrigger ControlID="BtnSubmit" />        
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
               <asp:FileUpload ID="file" onchange="perImg(this)" runat="server" />
        
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="ddl_area" EventName="SelectedIndexChanged" />
                    <asp:PostBackTrigger ControlID="BtnSubmit" />
                </Triggers>
            </asp:UpdatePanel>
    其中ControlID="BtnSubmit“为提交整个页面或者说上传文件要获取上传文件的名的button的ID.