【问题标题】:iFrame loading twice in asp AjaxToolkit TabContaineriFrame在asp AjaxToolkit TabContainer中加载两次
【发布时间】:2014-11-11 10:28:51
【问题描述】:

我在我的项目中使用asp AjaxToolkit,如下asp.net C# 代码。

<asp:UpdatePanel ID="UpdatePanelDemo" runat="server">
        <ContentTemplate>
            <ajax:TabContainer ID="tabMessage" runat="server" ActiveTabIndex="1" AutoPostBack="true"
                OnActiveTabChanged="tabMessage_ActiveTabChanged" CssClass="ajax__tab_blueGrad-theme">
                <ajax:TabPanel ID="TabMCompose" runat="server">
                    <HeaderTemplate>
                        <span style="padding-left: 5px; padding-right: 5px;">Compose </span>
                    </HeaderTemplate>
                    <ContentTemplate>
                    This Text not flickering or not loading twice // ***** 
                        <iframe id="IFrmCompose" runat="server" scrolling="no" frameborder="0" height="400px"
                            width="100%"></iframe>
                    </ContentTemplate>
                </ajax:TabPanel>
                <ajax:TabPanel ID="tabMInbox" runat="server">
                    <HeaderTemplate>
                        <span style="padding-left: 5px; padding-right: 5px;">Inbox (<span id="SpnIn" runat="server"></span>)</span>
                    </HeaderTemplate>
                    <ContentTemplate>
                        <iframe id="IFrmInbox" runat="server" scrolling="no" frameborder="0" height="400px"
                            width="100%"></iframe>
                    </ContentTemplate>
                </ajax:TabPanel>
            </ajax:TabContainer>
        </ContentTemplate>
   </asp:UpdatePanel>

问题:当我在 ajax TabContainer 中使用 iFrame 并且当用户从第一个选项卡移动到第二个选项卡时,页面似乎加载了两次,iFrame 加载了两次或它会闪烁,但如上所示 iFrame 上方的文本('此文本未闪烁或未加载两次')没有闪烁。

iFrameAjax TabContainer 似乎有问题。

请给我建议为什么会发生这种情况。

谢谢。

【问题讨论】:

  • OnActiveTabChanged 事件触发,重新加载UpdatePanel,结果 iframe contentWindow 再次加载,我们无法观察到静态文本或纯 html 标签呈现小片段的延迟。 tabMessage_ActiveTabChanged 方法中发生了什么?
  • @VenkataPanga - 在tabMessage_ActiveTabChanged 中我为所有iFrames 分配Src,例如IFrmCompose='somepage.aspx'; IFrmInbox='someOtherpage.aspx';
  • 使用UFrame

标签: c# asp.net updatepanel ajaxcontroltoolkit


【解决方案1】:

不是 100% 肯定,因为没有附加代码隐藏,但它看起来像一个 ViewState 问题。由于您没有在转发器模板中设置 IFrame SRC,因此页面初始化将首先将 IFrame 设置为空,然后重新设置 URL,即使它没有更改(导致它闪烁)。

建议:当标签页改变时,将 URL 持久化在 ViewState 或其他中,并在转发器模板中将其设置为持久化值。始终将任何空帧 SRC 设置为“about:blank”以避免不必要的加载并可靠地检测更改。

只是附注:在某种程度上,您正在做同样的事情两次 - 使用 UpdatePanels/Ajax 控件您不需要 IFrame,您的选项卡的内容应该通过 AJAX 调用检索,从而使 IFrame 过时。

【讨论】:

    【解决方案2】:

    不是 100% 确定,因为没有附加代码隐藏,但它看起来像一个 ViewState 问题。 页面重新加载可能是该行为的原因

    if(!IsPostback) 绑定();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      相关资源
      最近更新 更多