【问题标题】:Clear up AjaxToolkit AsyncFileUpload control清除 AjaxToolkit AsyncFileUpload 控件
【发布时间】:2011-07-12 21:28:55
【问题描述】:

我在我的 aspx.net 页面中使用了 AsyncFileUpload 控件。此控件在更新面板中运行。

我可以成功地将文件异步上传到服务器。

我的问题是每个文件上传后我无法刷新整个页面,所以我需要弄清楚如何清除上次上传的文件,所以当用户选择一个新文件上传时,旧文件不会出现在控件中,并且控件不会在 ViewState 中保留其上次上传的内容。

我已经尝试过这个http://www.aspsnippets.com/Articles/Clear-contents-of-AsyncFileUpload-Control-after-upload-and-page-revisit.aspx,但它只清除了 html,当我执行服务器异步回发时,AsyncFileUpload 控件仍然上传了最后一个文件。

有没有办法在服务器端进行清理?也许与视图状态有关?

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: asp.net ajaxcontroltoolkit


    【解决方案1】:

    在客户端,您可以使用OnClientUploadComplete 事件来清除最后上传的文件条目。一旦文件上传完成并且回发发生时,AsyncFileUpload1.HasFile 将返回false

    aspx 页面:

    <asp:AsyncFileUpload ID="AsyncFileUpload1" OnClientUploadComplete="success" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" runat="server" />
    

    在 JavaScript 标记内:

    function success() {         
        var fu = document.getElementById("AsyncFileUpload1"); 
        document.getElementById("AsyncFileUpload1").innerHTML = fu.innerHTML; 
    } 
    

    【讨论】:

    • 感谢瓦卡斯!今天这对我有帮助:-)
    • function success(sender, args) { $(sender._element).find('input').val(''); }
    【解决方案2】:

    这对我有用:

    function ClearFile() {
        $('input[type="file"]').each(function () {
            $("#" + this.id).replaceWith($("#" + this.id).clone(true));
        });
    
        //For other browsers
        $('input[type="file"]').each(function () { $("#" + this.id).val(""); });
    }
    

    【讨论】:

      【解决方案3】:

      服务器端清理对我有用:

      protected void FileUploadComplete(object sender, EventArgs e) 
      {
          string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
          AsyncFileUpload1.PostedFile.SaveAs(Server.MapPath("Uploads/") + filename);
      
          ClearContents(sender as Control);
      }
      
      private void ClearContents(Control control)
      {
         for (var i = 0; i < Session.Keys.Count; i++)
         {
            if (Session.Keys[i].Contains(control.ClientID))
            {
               Session.Remove(Session.Keys[i]);
               break;
            }
         }
      }
      

      参考:Fer 问题中的链接。 http://www.aspsnippets.com/Articles/Clear-contents-of-AsyncFileUpload-Control-after-upload-and-page-revisit.aspx

      【讨论】:

        【解决方案4】:
        <asp:AsyncFileUpload ID="AsyncFileUpload1" OnClientUploadComplete="success" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" runat="server" />
        

        function success(sender, args) { $(sender._element).find('input').val(''); }
        

        感谢“Scotty.NET

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-21
          • 1970-01-01
          • 1970-01-01
          • 2011-08-06
          • 1970-01-01
          • 2011-08-16
          • 1970-01-01
          • 2010-09-12
          相关资源
          最近更新 更多