AsyncFileUploadコントロールに関連する奇妙な問題が発生しています。アップロードの後、ClientUploadCompleteイベントハンドラから_doPostBack関数を呼び出すことによってページを更新しています。最初はうまく動作しますが、次にファイルをアップロードしようとすると、アップロードする前にページが最初にリフレッシュされ、その後アップロードが行われ、ページが再びリフレッシュされます。なぜ更新ページがアップロードの前に一度二回、アップロードの後に二回呼び出されているのかわかりません。私はこのバグを持っているこのコードの簡略版を持っています。どんな手がかりも、なぜ起こっているのですか?ファイルのアップロード後にページを更新する際に問題が発生する
マークアップ:
<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);
}