AsyncFileUplaod теряет целевой кадр

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

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

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

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

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


person Shai    schedule 30.08.2011    source источник


Ответы (1)


Существует известная проблема с конструкцией элемента управления AsyncFileUpload ASP.NET AJAX: 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>
person user423430    schedule 02.09.2011