UpdatePanel中的FileUpload控件不刷新整个页面?

问题描述:

根据Microsoft FileUpload控件与AJAX UpdatePanel不兼容。UpdatePanel中的FileUpload控件不刷新整个页面?

我知道一个PostBackTrigger可以添加到表单的提交按钮这样的:

<Triggers> 
    <asp:PostBackTrigger ControlID="Button1" /> 
</Triggers> 

的问题是,这会强制执行完整后回其空隙出来的整体形式首先使用UpdatePanel的一点。有没有解决这个问题,不会导致整个页面刷新?

我知道可以做到这一点的第三方组件。它被称为"swfupload",可以免费使用和开源,并使用JavaScript和Flash做魔术。

这里是他们所提供的功能列表: (从他们的网站)

  • 一次上传多个文件,按ctrl /移选择对话框
  • 的Javascript回调在所有事件
  • 获取文件信息上传开始
  • 用XHTML风格上传元素和CSS
  • 显示信息WHI前le文件正在使用HTML上传
  • 无需重新加载页面
  • 适用于所有支持Flash的平台/浏览器。
  • 缓慢下降到正常的HTML上传表单如果Flash或JavaScript是 不可用
  • 控制文件大小上载开始之前
  • 仅显示在对话框
  • 队列上传所选的文件类型,删除/开始上传
之前添加文件

他们还有一个demo area你可以在那里玩他们的控制。这样你就可以确保它正是你想要的。

我们在我们的一个项目中使用它,迄今为止它从未失败过,所以我认为这是一个安全的选择。

哦,这里是下载页面:http://code.google.com/p/swfupload/

你不仅可以通过重装整个HTML文件上传通过AJAX文件(S)。如果您更喜欢纯HTML(这种情况更常见,例如WordPress使用)或其他类似Sven建议的swfupload,则应使用iframe

我发现有一天,当我遇到同样的问题:http://vinayakshrestha.wordpress.com/2007/03/13/uploading-files-using-aspnet-ajax-extensions/

对于我的实现,我把iframe放在一个模式弹出框中,并添加了一个style =“display:none”按钮来处理弹出窗口的关闭。在监视iframe中的变化的javascript函数中,我添加了document.getElementById(“<%= btnCloseUpload.C​​lientID%>”)。click();为隐藏的按钮。

添加到您的按钮控制:

OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';" 

- 或 -

让你的网页表单标签的样子:

<form id="form1" runat="server" enctype="multipart/form-data"> 
+3

我试过了 - 我的FileUpload控件仍然为.HasFile属性返回False。 – 2010-05-04 19:37:22

尝试AJAX AsyncFileUpload。如果用于它打算使用的事情(处理UploadedComplete事件),它会很好用。需要

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

+0

我不知道它是否是我的特定情况,但是当它位于更新面板内时,这对于.HasFile也会返回false。我的解决方法是使用触发器标记来排除它像*问题,但仍使用AsyncFileUpload控件(可能会删除异步性质)。这是一个mojoPortal网站。 – TamusJRoyce 2012-03-20 13:18:08

被触发上传事件的按钮已经UseSubmitBehavior属性设置为false:

clsUploadButton.UseSubmitBehavior = False; 

可以使用iframe有“目标”属性,它提起来的FileUpload页面或使用jQuery例子在链接 How to make Asynchronous(AJAX) File Upload using iframe?