iFrame在asp AjaxToolkit TabContainer中加载两次

时间:2014-11-11 10:28:51

标签: c# asp.net updatepanel ajaxcontroltoolkit

我在我的prjoect中使用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 iFrame中使用TabContainer时,当用户从第一个标签页移动到第二个标签页时,似乎页面加载了两次而{{} 1}}加载两次或闪烁,但iFrame上方的文字如上所示(&#39; 此文字不闪烁或未加载两次&#39;)不会闪烁。

iFrameiFrame似乎存在问题。

请告诉我为何会发生这种情况。

感谢。

2 个答案:

答案 0 :(得分:1)

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

建议:更改选项卡时,在ViewState或其他URL中保留URL,并将其在转发器模板中设置为持久值。始终将任何空框架SRC设置为“about:blank”以避免不必要的加载并可靠地检测更改。

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

答案 1 :(得分:1)

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

如果(!的IsPostBack)    BindIt();