我有一个实用程序,可以上传文件然后处理并保存。所以我有一个文件上传控件,一个上传的btn和一个带有几个标签的取消btn来显示消息。
问题:当我点击btnupload或btncancel时,我无法看到更新进度。 这是代码。
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="lblerrormsg" runat="server" class="lblerrormsg"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Label ID="lblsource" runat="server" class="lblleft" Text="Select file ">
</asp:Label>
<asp:FileUpload ID="FileUploadSource" runat="server" class="BtnUpload" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" class="btnRefresh"
OnClientClick="ClearFileUpload()"
CssClass="btnRefresh" OnClick="btnCancel_Click" />
<asp:Button ID="btnUnlock" runat="server" Text="Process File"
class="btnRefresh" OnClick="btnUnlock_Click" CssClass="btnRefresh" />
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="100"
AssociatedUpdatePanelID="UpdatePanel2" >
<ProgressTemplate>
<img alt="Loading" src="Images/updateprogress.gif" />
</ProgressTemplate>
</asp:UpdateProgress>
<asp:Label ID="lblSaved" runat="server" class="lblleft"></asp:Label><br/>
<asp:Label ID="lblsourcePath" runat="server" class="lblleft"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="lblerrormsg" runat="server" class="lblerrormsg"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>`
请帮忙。 谢谢 昌德
答案 0 :(得分:0)
消除AssociatedUpdatePanelID并尝试,因为它在UpdatePanel中,我认为你不需要它。
答案 1 :(得分:0)
我的怀疑是因为asp.net文件上传不是异步事件,并且在上传过程中asp.net Ajax被阻止。
我过去解决这个问题的唯一方法是编写我自己的上传器,通过iframe发送文件,并在服务器上自定义处理程序,反映基础http请求中的已发布文件,以便您可以保存它作为一个流,同时提醒客户它的进展。
原因是任何尝试读取请求通常会导致整个文件被加载到内存中。
答案 2 :(得分:0)
Button和UpdateProgress控件都需要位于更新面板中,或者您需要将UpdateProgress控件从UpdatePanel中取出。