我认为使用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);
}
}