AjaxControlToolkit CollapsiblePanelExtender с IFrame внутри вызывает двойную обратную передачу на странице iframe. Как это предотвратить? - PullRequest
0 голосов
/ 16 февраля 2020

Например, я создал тестовый веб-проект с AjaxControlToolkit и двумя простыми страницами, одна с iframe на сворачиваемой панели (используя CollapsiblePanelExtender), а вторая внутри iframe. Я также использую UpdatePanel, но это не влияет на результат.

В результате, после запуска моей страницы с помощью iframe в складной панели, отладчик дважды получает событие PageLoad тестовой страницы. Мой вопрос: почему это происходит и как этого избежать?

Код первой страницы:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestCollapseFrame.aspx.cs" Inherits="IFrameCollapse.TestCollapseFrame" 
    Culture="auto" UICulture="auto" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="AjaxToolkit" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div style="width: 500px; background-color: aliceblue">
                    <asp:Panel runat="server" ID="panel1">
                        <div style="font-weight: bold; background-color: burlywood;">
                            <span>iframe in collapse panel</span>
                        </div>
                    </asp:Panel>
                    <asp:Panel runat="server" ID="panel2" Width="98%" HorizontalAlign="center">
                        <iframe id="frame1" runat="server" src="http://localhost:54807/TestForm.aspx"></iframe>
                    </asp:Panel>
                    <ajaxToolkit:CollapsiblePanelExtender runat="server" ID="cpe" TargetControlID="panel2"
                        CollapseControlID="panel1" ExpandControlID="panel1" Collapsed="false" CollapsedSize="0"
                        ExpandedSize="120" ExpandedText="(Collapse...)" CollapsedText="(Expand...)" TextLabelID="textLabel" />
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>
</html>

На второй странице я просто пишу эту строку для точки останова отладчика:

protected void Page_Load(object sender, EventArgs e)
{
    var test = "Here the debugger gets up twice";
}

Редактировать:

Нашел решение, изменив iframe.sr c на стороне клиента, но ошибка или что это такое все еще есть

...