AsyncFileUplaod теряет целевой кадр - PullRequest
2 голосов
/ 30 августа 2011

Моя страница имеет тег IFRAME с src, указывающим на другую страницу, которая имеет 4 кнопки ImageButton и ModalPopupExtender, который открывает DIV, который содержит AsyncFileUpload (AFU) для загрузки изображений.

Всякий раз, когда пользователь нажимает кнопку ImageButton, ModalPopupExtender открывает DIV с помощью элемента управления AFU, пользователь выбирает изображение, а затем кнопка Image получает ImageURL выбранного изображения.

При первом выборе изображения для загрузки все работает нормально, изображение сохраняется, и ImageButton получает правильный ImageURL, и элемент управления возвращается к странице вызова (той, которая имеет тег IFRAME). Во второй раз, когда пользователь нажимает кнопку ImageButton, чтобы открыть ModalPopupExtender для выбора и загрузки изображения на страницу, откройте новое окно браузера с документом iframed в качестве основного документа ...

Я искал в Интернете решение и обнаружил, что AFU изменяет document.forms [0] .target, поэтому в моем событии uploadComplete я пытаюсь восстановить document.forms [0] .target в правильную цель ( IFRAME id), но он по-прежнему открывается в новом окне браузера с документом iframed в качестве основного документа.

Кто-нибудь может помочь с этим?

1 Ответ

0 голосов
/ 03 сентября 2011

Существует известная проблема с дизайном элемента управления ASP.NET AJAX AsyncFileUpload: AsyncFileUpload изменяет расположение браузера при использовании на странице IFRAME . Тем не менее, я не могу воспроизвести эту проблему с 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>
...