文件上传不';在UpdatePanel中嵌套时无法工作?C#

文件上传不';在UpdatePanel中嵌套时无法工作?C#,c#,asp.net,ajax,file-upload,updatepanel,C#,Asp.net,Ajax,File Upload,Updatepanel,按钮1位于更新面板之外,当用户在上传框中添加文件时运行的javascript如下: <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />

按钮1位于更新面板之外,当用户在上传框中添加文件时运行的javascript如下:

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                        <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" />
                </Triggers>
</asp:UpdatePanel>
功能点击按钮(){
document.getElementById(“”)。单击();
}
问题很简单。FileUpload1.HasFile==false。我不知道为什么会这样,但当我把它放在“更新”面板中时,它就停止工作了。

我在这上面看到了一些其他的线索。但他们都没有回答为什么会发生这种情况,他们只是指向你可以下载的东西


EDIT:我想这样做的主要原因是为了得到一个..上传文件。。标记,以便在客户端上载到服务器时弹出,并在完成后在数据列表中显示。我只是无法让UpdateProgress正常工作。

出于安全考虑,浏览器不允许您通过javascript发布文件。想象一下,如果我可以编写一点javascript,将MyDocuments文件夹的内容异步提交到我的服务器

因此,发布表单的javascript方法,如UpdatePanel使用的XMLHttpRequest,将无法工作

如果您使用3.5SP1,这篇文章将介绍一个不错的解决方案


如果您不想使用AjaxControlToolkit,本文将介绍一些解决方法

基本上,您只需让按钮执行完整的回发即可发送文件。另外,请确保您有以下信息:Form.Enctype=“多部分/表单数据”;在代码中设置,也可以在该页面中设置。如前所述,出于安全原因,如果没有黑客攻击,AsyncPostback无法处理文件。(我从来没能让它工作过)


文件上载无法与部分回发一起使用。 因此,只需在页面加载时添加这一行即可

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
           <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
      </ContentTemplate>
      <Triggers>
         <asp:PostBackTrigger ControlID="Button1" />
      </Triggers>
 </asp:UpdatePanel>
或者使用
PostBackTrigger

ScriptManager.GetCurrent(this).RegisterPostBackControl(this.YourControlID);


.

更新进度不适用于完整的回发,对吗?正确,您将无法监控进度,除非您的浏览器在回发过程中显示加载栏,这似乎不是所有浏览器上的可靠方式。这很旧,现在我们可以通过js回发,但如何?
ScriptManager.GetCurrent(this).RegisterPostBackControl(this.YourControlID);
<Triggers>
            <asp:PostBackTrigger ControlID="YourControlID" />
</Triggers>
<ajaxToolkit:AsyncFileUpload OnClientUploadError="uploadError"
     OnClientUploadComplete="uploadComplete" runat="server"
     ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern"
     UploadingBackColor="#CCFFFF" ThrobberID="myThrobber" />