2

我有一个我认为是使用 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);
    }
}
4

0 回答 0