asp.net 嵌套在UpdatePanel?C#中时,文件上载不起作用

mccptt67  于 2023-03-13  发布在  .NET
关注(0)|答案(3)|浏览(167)
<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 == false。我不知道为什么会这样,但是当我把它放到更新面板中时,它就停止工作了。

我看过一些其他的帖子。但是没有一个回答为什么会发生这种情况,他们只是指向你可以下载的东西。

编辑:我想这样做的主要原因是,当客户端上传到服务器时,我可以弹出一个..Uploading File..标记,一旦上传完成,就在数据列表中显示它。我只是无法让UpdateProgress工作。

tf7tbtn2

tf7tbtn21#

基本上你只需要让你的按钮做一个完整的回发来发送文件。还要确保你有这个。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>
7lrncoxx

7lrncoxx2#

文件上传将不工作与部分回发。所以只要添加这一行在您的页面加载

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

或者使用PostBackTrigger

<Triggers>
            <asp:PostBackTrigger ControlID="YourControlID" />
</Triggers>

或者您需要AjaxControl Toolkit中定义的特殊AsyncFileUpload控件。

<ajaxToolkit:AsyncFileUpload OnClientUploadError="uploadError"
     OnClientUploadComplete="uploadComplete" runat="server"
     ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern"
     UploadingBackColor="#CCFFFF" ThrobberID="myThrobber" />

您可以选中here

brccelvz

brccelvz3#

出于安全考虑,浏览器不允许通过javascript发布文件,想象一下,如果我可以写一点javascript来异步地将我的文档文件夹中的内容提交到我的服务器上。
因此,发布表单的javascript类方法,如UpdatePanel使用的XMLHttpRequest,将无法工作。
这篇文章描述了一个体面的工作,如果你是在3.5 SP1.Link
如果您不想使用AjaxControlToolkit,本文将介绍一些变通方法。Link

相关问题