UpdatePanel内的FileUpload控件没有刷新整个页面?

时间:2008-08-30 06:48:48

标签: .net asp.net asp.net-ajax file-upload updatepanel

根据Microsoft,FileUpload控件与AJAX UpdatePanel不兼容。

我知道可以将PostBackTrigger添加到表单的提交按钮,如下所示:

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

问题在于,这会强制表单执行完整的回发,从而避免了首先使用UpdatePanel的整个过程。是否有解决此问题的方法不会导致整个页面刷新?

7 个答案:

答案 0 :(得分:8)

我知道可以做到这一点的第三方组件。它被称为"swfupload",可以免费使用和开源,并使用javascript和flash来实现魔力。

这是他们提供的功能列表: (来自他们的网站)

  
      
  • 通过对话框中的ctrl / shift-selection一次上传多个文件
  •   
  • 所有活动的Javascript回调
  •   
  • 上传开始前获取文件信息
  •   
  • 使用XHTML和css
  • 设置上传元素   
  • 使用HTML
  • 上传文件时显示信息   
  • 无需重新加载页面
  •   
  • 适用于所有支持Flash的平台/浏览器。
  •   
  • 如果是Flash或javascript,则优雅地降级到普通的HTML上传表单   不可用
  •   
  • 上传开始前控制文件大小
  •   
  • 仅在对话框中显示所选的文件类型
  •   
  • 队列上传,在开始上传之前删除/添加文件
  •   

他们还有一个demo area,您可以在其中进行控制。这样你就可以确保它正是你想要的。

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

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

答案 1 :(得分:3)

仅通过重新加载整个AJAX文档,您无法通过HTML上传文件。如果您更喜欢纯HTML(这种情况比较常见,例如WordPress使用)或其他类似Sven建议的swfupload,您应该使用iframe

答案 2 :(得分:3)

将此添加到按钮控件:

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

- 或 -

使您的页面表单标记看起来像:

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

答案 3 :(得分:1)

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

对于我的实现,我将iframe放在一个模态弹出窗口中,并添加了一个style =“display:none”的按钮来处理弹出窗口的关闭。在监视iframe中的更改的javascript函数中,我添加了document.getElementById(“&lt;%= btnCloseUpload.C​​lientID%&gt;”)。click();隐藏按钮。

答案 4 :(得分:1)

尝试使用AJAX AsyncFileUpload。如果在要使用的事项中使用它(处理UploadedComplete事件),它可以很好地工作。

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

答案 5 :(得分:0)

可以使用IFrame具有提到FileUpload页面的“target”属性或在链接上使用Jquery示例 How to make Asynchronous(AJAX) File Upload using iframe?

答案 6 :(得分:-1)

触发上传事件的按钮需要将UseSubmitBehavior属性设置为false:

clsUploadButton.UseSubmitBehavior = False;