c# - iFrame 在 asp AjaxToolkit TabContainer 中加载两次

标签 c# asp.net updatepanel ajaxcontroltoolkit

我在我的项目中使用 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 上方的文本如上所示('This Text not flickering or not loading twice ') 不闪烁。

看来 iFrameAjax TabContainer 有问题。

请告诉我为什么会这样。

谢谢。

最佳答案

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

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

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

关于c# - iFrame 在 asp AjaxToolkit TabContainer 中加载两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862705/

相关文章:

c# - 我应该有一个比它的语句长的方法名吗?

ajax回调后jquery函数不起作用

javascript - 文件存在,但状态 404 在 asp.net 母版页中未找到文件

asp.net - ASP.NET 中 HTTP header 的争论控制

javascript - 如何从后面的 asp.net 代码调用 javascript 函数

asp.net - FileUpload控件回发问题

asp.net - 允许在 asp.net 文本框中使用 html

c# - WCF 和 EF - 如何强制主机使用自己的连接字符串

c# - 需要帮助将列表传递给此 csv 导出类

c# - 如何使用 Visual Studio 和 C# 减少单元测试的编译时间