2011-08-30 74 views
2

我的页面有一个IFRAME标签用一个src指向其中有4个ImageButtons另一个页面,并打开了一个包含用于加载图片的AsyncFileUpload(AFU)一个DIV一个ModalPopupExtender。AsyncFileUplaod失去目标框架

每当用户点击ImageButton时,ModalPopupExtender会打开带有AFU控件的DIV,用户选择该图片,然后Imagebutton获取所选图像的ImageURL。

我第一次选择要上传的图片evrything工作正常,图像被保存并且ImageButton获取正确的ImageURL并且控件返回到调用页面(带有IFRAME标签的页面)。第二次用户点击ImageButton打开ModalPopupExtender选择和上传图片页面打开一个新的浏览器窗口与iframed文档作为主要文件...

我搜索了网络的解决方案,并找到AFU在我的uploadComplete事件中更改document.forms [0] .target我尝试将document.forms [0] .target恢复到正确的目标(IFRAME ID),但它仍然在新的浏览器窗口中打开以iframed文档作为主文档。

任何人都可以提供帮助吗?

回答

0

ASP.NET AJAX AsyncFileUpload控件的设计存在一个已知问题:AsyncFileUpload changes browser location when used in IFRAME page。但是,我无法使用该工具包的v3.5.50731.0和下面的示例代码重现此问题。

由于单击ImageButton时发生问题,因此应该添加一个OnClientClick处理程序,它可以重置表单目标 - 并且它应该重置为''(空字符串),因为ImageButton已经在IFRAME中。

这里是最小样本,这是我无法用AjaxControlToolkit v3.5.50731.0突破:

<%@ Page Language="C#" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolKit" %> 
<html><body> 
<script runat="server"> 
int Id = Convert.ToInt32(HttpContext.Current.Request["Id"]); 
</script> 
<form runat="server"> 
<ajaxToolKit:ToolkitScriptManager runat="server" /> 
<h1>IFRAME <%= Id %></h1> 
<asp:UpdatePanel runat="server"> 
<ContentTemplate> 
    <ol><li><ajaxToolKit:AsyncFileUpload runat="server" /></li> 
    <li><asp:Button runat="server" Text="After the file is uploaded, click this button" /></li></ol> 
</ContentTemplate> 
</asp:UpdatePanel> 
</form> 
<% if (++Id % 3 != 0) 
{ %><iframe src="?id=<%= Id %>" width="90%" name="iframe<%= Id %>" height="400px" 
style="float: right" /> 
<% } %> 
</body></html> 
+0

你有这样的工作样品? – Shai