Например, я создал тестовый веб-проект с 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 на стороне клиента, но ошибка или что это такое все еще есть