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.ClientID%>”)。click();为隐藏的按钮。
添加到您的按钮控制:
OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';"
- 或 -
让你的网页表单标签的样子:
<form id="form1" runat="server" enctype="multipart/form-data">
尝试AJAX AsyncFileUpload。如果用于它打算使用的事情(处理UploadedComplete事件),它会很好用。需要
http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx
我不知道它是否是我的特定情况,但是当它位于更新面板内时,这对于.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?
我试过了 - 我的FileUpload控件仍然为.HasFile属性返回False。 – 2010-05-04 19:37:22