嵌套在UpdatePanel中时FileUpload不起作用? C#

        

按钮1位于更新面板之外,当用户在上传框中添加文件时运行的javascript是:

 function clickTheButton() { document.getElementById('').click(); } 

问题很简单。 FileUpload1.HasFile == false。 我不知道为什么会这样,但当我把它放在更新面板中时它就不再起作用了。

我已经看到了其他一些线索。 但他们都没有回答为什么会这样,他们只是指出你可以下载的东西。

编辑:我真正想要这样做的主要原因是,我可以获得一个..上传文件..标签在客户端上传到服务器时弹出,一旦完成,就显示在数据列表中。 我不能让UpdateProgress工作。

基本上你只需要让你的按钮做一个完整的回发来发送文件。 还要确保你有this.Form.Enctype =“multipart / form-data”; 在您的代码中设置,或者您可以放入该页面。 出于安全原因,AsyncPostbacks不能与文件一起使用,没有黑客攻击。 (我从来没有能够让它工作)。

          

出于安全考虑,浏览器不允许您通过javascript发布文件。 想象一下,如果我能写一点javascript来异步提交My Documents文件夹的内容到我的服务器。

因此,javascript-ish发布表单的方法,如UpdatePanel使用的XMLHttpRequest,将无法正常工作。

这篇文章描述了一个体面的工作,如果你在3.5 SP1。 http://geekswithblogs.net/ranganh/archive/2009/10/01/fileupload-in-updatepanel-asp.net-like-gmail.aspx

如果你不想使用AjaxControlToolkit,这篇文章描述了一些解决方法。 http://geekswithblogs.net/ranganh/archive/2008/04/01/file-upload-in-updatepanel-asp.net-ajax.aspx

文件上传不适用于部分回发。 所以只需在页面加载时添加此行

 ScriptManager.GetCurrent(this).RegisterPostBackControl(this.YourControlID); 

或者使用PostBackTrigger

    

或者您需要AjaxControl Toolkit中定义的特殊AsyncFileUpload控件。

  

你可以在这里查看 。