AsyncFileUpload回发会导致双重上传
我在网页上实现了AsyncFileUpload
控件。 此网页要求上传的文件显示在GridView
。
GridView
包含以下列:“ 文件名 ”,“ 机密 ”复选框和“ 删除 ”按钮以删除上载的文件。
由于AsyncFileUpload
回发不执行整页回发,因此我需要在AsyncFileUpload控件的OnClientUploadComplete
事件上“强制”回发,以便在上载文件后呈现gridview。
在OnClientUploadCompleteEvent
,我使用javascript来调用__doPostBack
。 在这个回发中,我只绑定我的GridView并显示文件信息(我不重新保存文件)。
问题: 在AsyncFileUpload
的第一个“部分”回发上,文件已按预期成功上传。 在我用__doPostBack
强制的第二个回发中,文件被重新上传。
您可以使用显示上传进度的Google Chromevalidation这一点。 行为如下:
– 选择文件后,进度从0%增加到100%并上传文件。
– 此后,执行__doPostBack
,您可以再次看到上传进度从0%增加到100%。
如何确保Gridview已正确填充,但文件未上载两次?
我附上了一个包含问题的示例解决方案: https : //www.yousendit.com/download/MzZFc2ZBNDRrYUN4dnc9PQ
也许难看,但有效:
1)添加一个css-hidden asp:按钮下面的asp:AsyncFileUpload AsyncFileUpload1
控件。
2)在Page_Load
方法上,删除if (Request.Params.Get("__EVENTTARGET") == "UploadPostback")
并将其块放在前面的if
。
3)在AsyncFileUpload1_UploadedComplete
函数上,还删除if (Request.Params.Get("__EVENTTARGET") != "UploadPostback")
行,但保留其中的所有内容。
4)回到aspx。 把一个asp:UpdatePanel放在网格GridView1之外。
5)最后一步是更改AjaxUploadComplete
客户端javascript函数,使其触发回发。 将其替换为以下内容:
function AjaxUploadComplete() { var btnClick = document.getElementById("btnClick"); btnClick.click(); }
用户选择的任何文件仅上载一次。
此处的所有更改都应在AjaxUpload.zip的AjaxUpload.aspx和AjaxUpload.aspx.cs中进行。
有一个更简单的解决方案
@@ t0x1n3我自己给出的解决方案非常简单但不起作用
围绕AsyncFileUpload使用更新面板名称UpdatePanelAFU,然后在UpdatePanelAFU中执行以下操作:
protected void AsyncFileUpload_UpdatePanelAFU(object sender,AjaxControlToolkit.AsyncFileUploadEventArgs e) { if (Request.Params.Get("__EVENTTARGET") != "UpdatePanelAFU") return; ..... rest of the code }
请享用!
我相信@Veera是对的。 在文件上传时,多次调用UploadComplete。 以下对我有用。
void AsyncFileUpload1_UploadedComplete(object sender, AsyncFileUploadEventArgs e) { if (AsyncFileUpload1.IsUploading) return; // rest of your upload code }
我无法访问包含该问题的示例解决方案,但我在项目中遇到了使用AsyncFileUpload组件的双重回发。 我发现了一个非常简单的解决方法:
只需添加:
private bool justUploaded = false;
然后:
void AsyncFileUpload1_UploadedComplete(object sender, AsyncFileUploadEventArgs e) { if (justUploaded) return; justUploaded = true; // rest of your upload code }
我发现这是一个更优雅的解决方案,在这里找到: http : //forums.asp.net/t/1951566.aspx?AsyncFileUpload +uploads +twice )但下面是我改变的完全工作代码:
AsyncFileUpload Example
AsyncFileUpload
有一个名为IsUploading
的属性。 当此属性设置为false时,将发生postback
。 你可以这样检查这个属性:
上述就是C#学习教程:AsyncFileUpload回发会导致双重上传分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
if(AsyncFileUpload1.IsUploading) { ..... upload codes }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005797.html