我在网页上实现了 AsyncFileUpload
控件。此网页要求上传的文件显示在 GridView
中。
GridView
包含以下列:“文件名”、“ secret ”复选框和“删除” "按钮删除上传的文件。
由于 AsyncFileUpload
回发不会执行完整页面 回发,我需要在 OnClientUploadComplete
事件上“强制”回发AsyncFileUpload 控件,以便在上传文件后呈现 gridview。
在 OnClientUploadCompleteEvent
中,我使用 javascript 调用 __doPostBack
。在这个回发中,我只绑定(bind)了我的GridView并显示了文件信息(我没有重新保存文件)。
问题:在 AsyncFileUpload
的第一个“部分”回发中,文件按预期成功上传。在我使用 __doPostBack
强制执行的第二次回传中,文件被重新上传。
您可以使用显示上传进度的 Google Chrome 来验证这一点。行为如下:
- 选择文件后,进度从 0% 增加到 100% 并上传文件。
- 在此之后,执行 __doPostBack
,您可以看到上传进度再次从 0% 增加到 100%。
如何确保 Gridview 已正确填充,但文件不会被上传两次?
我附上了一个包含问题的示例解决方案:https://www.yousendit.com/download/MzZFc2ZBNDRrYUN4dnc9PQ
最佳答案
有一个更简单的解决方案
@@t0x1n3Himself the solution u gave is very simple but does not work
用更新面板名称围绕 AsyncFileUpload UpdatePanelAFU 然后在 UpdatePanelAFU 中执行以下操作:
protected void AsyncFileUpload_UpdatePanelAFU(object sender,AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
if (Request.Params.Get("__EVENTTARGET") != "UpdatePanelAFU")
return;
..... rest of the code
}
尽情享受吧!
关于c# - AsyncFileUpload 回发导致双重上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5018044/