Search code examples
asp.netajaxcontroltoolkit

Ajax AsyncFileUpload fires server code but does not update client side


I have an asyncfileupload control inside an update panel.

In UploadedComplete, i save file to server.

 protected void ImageFileUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
    System.Threading.Thread.Sleep(5000);
        if (ImageFileUpload.HasFile)
        {
            Extension= System.IO.Path.GetExtension(ImageFileUpload.FileName);

            TempImageUpload(ImageFileUpload.FileName.ToString(), Extension.Value);
            FileImage.ImageUrl = "~/Temp/" + Session["ID"].ToString() + Extension.Value;
            RemoveImageButton.Visible = true;
        }
}

The file succesfully upload and fires the correct server side code.

But don't update viewstate and controls.

 private string Extension
{
    get { 
        if(ViewState["Extension"]==null)
            return string.Empty;
        else
       return (string)ViewState["Extension"]; }
    set { ViewState["Extension"] = value; }
}

Solution

  • I save file On UploadedComplete event.

      protected void ImageFileUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
      {
        if (ImageFileUpload.HasFile)
        {
          ImageFileUpload.SaveAs(Request.PhysicalApplicationPath + "Temp\\" + Session["ID"].ToString() + extension);
        }
      }
    

    and fot change control in client side, i use OnClientUploadComplete.

    function uploadComplete(sender, args) {
            var filename = args.get_fileName();
            document.getElementById('<%= Extension.ClientID  %>').value = "." + filename.split('.').pop();
            var btn = document.getElementById('<%= RemoveImageButton.ClientID  %>')
            btn.style.visibility = 'visible';
        }