проблема с обновлением страницы после загрузки файла

У меня возникла странная проблема, связанная с элементом управления AsyncFileUpload. после загрузки я обновляю страницу, вызывая функцию __doPostBack из обработчика событий ClientUploadComplete. в первый раз он работает нормально, но в следующий раз, когда я пытаюсь загрузить файл, он сначала обновляет страницу перед загрузкой, затем выполняет загрузку и снова обновляет страницу. не уверен, почему страница обновления вызывается дважды: один раз перед загрузкой и один раз после загрузки. У меня есть упрощенная версия этого кода с этой ошибкой. Любые подсказки, пожалуйста, почему это происходит?

Разметка:

    <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);
    }

person RKP    schedule 24.01.2011    source источник


Ответы (1)


похоже, никто не может ответить на этот вопрос. Я до сих пор не понял, почему это происходит, но я нашел обходной путь, добавив флаг в сеансе, когда загрузка завершена, и проверить этот флаг перед обновлением данных на странице. таким образом, обновление данных не произойдет до загрузки. Благодарю.

person RKP    schedule 28.01.2011