2011-08-30 78 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