文件上传后更新页面的问题

时间:2011-01-24 17:22:23

标签: c# asp.net asp.net-ajax ajaxcontroltoolkit asyncfileupload

我遇到了与AsyncFileUpload控件相关的奇怪问题。上传后,我通过从ClientUploadComplete事件处理程序调用_doPostBack函数来更新页面。它第一次工作正常,但下次我尝试上传文件时,它会在上传之前先刷新页面,然后再上传并刷新页面。不确定为什么在上传前和上传后一次调用刷新页面两次。我有这个代码的简化版本,有这个bug。请问为什么会发生这种情况?

标记:

    <form id="form1" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<div>
    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" OnClientUploadComplete="AsyncFileUpload1_ClientUploadComplete"
                OnUploadedComplete="AsyncFileUpload1_UploadedComplete" />                
        </ContentTemplate>
    </asp:UpdatePanel>
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Button ID="Button1" runat="server" Text="Refresh Data" OnClick="Button1_Click" />
        <asp:Label ID="Label1" runat="server" EnableViewState="false"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>
</form>

使用Javascript:

    <script type="text/javascript">
    function AsyncFileUpload1_ClientUploadComplete() {
        var btnRefreshData = $get("<%=Button1.ClientID%>").name;
        __doPostBack(btnRefreshData, "");
    }

</script>

代码隐藏:

        protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = "Upload complete";
    }

    protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
    }

1 个答案:

答案 0 :(得分:0)

看起来没人能回答这个问题。我仍然没有弄清楚为什么会发生这种情况,但我通过在上传完成时在会话中添加标志来解决方法,并在刷新页面上的数据之前检查该标志。这样,在上传之前不会发生数据刷新。感谢。