我有一个我认为是使用 ajaxcontroltoolkit 的 AsyncFileUpload 控件的非常基本的设置。基本上,如果我将它从 div 中取出,控件将正常工作,但是当我将它放在 div 中时,它不再触发 OnUploadedComplete 服务器端事件。
这是如何工作的,您将鼠标悬停在要更改的图像上,单击“更新图像”,它会打开一个对话框(这是 AsyncFileUpload 控件所在的 div)并允许您上传新图像。
<div id="dialog-message" style="display: none;" title="Upload a Headshot Photo">
<p>Upload a headshot photo of this person. Your photo will be uploaded once you select and crop your photo.</p>
<fieldset>
<legend>Choose a photo to upload</legend>
Acceptable formats: .jpeg, .jpg, .gif, and .png and should be at least 72 DPI and 221x221.
**<ajax:AsyncFileUpload ID="asyncImageUpload"
ThrobberID="throbber"
OnClientUploadComplete="uploadComplete"
OnUploadedComplete="AsyncFileUpload_Complete"
runat="server" />**
<img src="/images/ajax-loader.gif" id="throbber" runat="server" style="display: none;" align="absmiddle" alt="loading" />
</fieldset>
</div>
上面是包含 AsyncFileUpload 控件的 div。就像我说的,如果我将它移到 div 之外,它就可以正常工作。我已经尝试更改表单中的 enctype,这就是它目前的样子:
<form id="form1" enctype="multipart/form-data" method="post" runat="server">
在尝试找到解决此问题的方法时,我尝试了所有可以找到的建议,但似乎都没有奏效。这甚至不在更新面板中,所以我不确定为什么它没有触发。
我唯一能想到的是,它与 div 一开始被隐藏,然后在用户单击链接后显示出来有关。我真的希望有人能帮忙,因为我要把我的电脑扔出窗外哈哈。提前致谢!
代码隐藏:
protected void AsyncFileUpload_Complete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
System.Threading.Thread.Sleep(4000);
if (this.asyncImageUpload.HasFile)
{
string path = MapPath("~/images/uploads/") + Path.GetFileName(e.filename);
this.asyncImageUpload.SaveAs(path);
}
}