小编典典

嵌套在UpdatePanel中时FileUpload不起作用?C#

ajax

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                        <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" />
                </Triggers>
</asp:UpdatePanel>

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

function clickTheButton() {
            document.getElementById('<%= Button1.ClientID %>').click();
        }

问题很简单。 FileUpload1.HasFile ==否。我不知道为什么会这样,但是当我将其放在更新面板中时,它将停止工作。

我已经看到了其他一些线程。但是他们都没有回答为什么会发生这种情况,他们只是指向您可以下载的内容。

编辑:确实,我想要这样做的主要原因是,我可以获取一个..Uploading File
..标签以在客户端上载到服务器时弹出,一旦完成,就将其显示在数据列表中。 我只是无法让UpdateProgress正常工作。


阅读 312

收藏
2020-07-26

共1个答案

小编典典

基本上,您只需要使按钮进行完整的回发即可发送文件。还请确保您具有this.Form.Enctype =“ multipart / form-data”;
在您的代码中设置,也可以在该页面中放置。如前所述,出于安全原因,AsyncPostbacks不能与文件一起使用,没有黑客攻击。(我从来没有能够使它正常工作)。

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
           <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
      </ContentTemplate>
      <Triggers>
         <asp:PostBackTrigger ControlID="Button1" />
      </Triggers>
 </asp:UpdatePanel>
2020-07-26