ASP UpdateProgress无法使用iframe

时间:2018-01-21 16:15:00

标签: asp.net iframe updatepanel scriptmanager updateprogress

我正在使用updateProgress控件来显示loader.gif,而我的页面中的iframe会加载。

iframe需要很长时间才能加载,但loader.gif不会出现

这是我的aspx页面

<!DOCTYPE html>
<head>
<title></title>
<style type="text/css">
    body {
        margin: 0;
        padding: 0;
        font-family: Arial;
    }

    .MyModal {
        position: fixed;
        z-index: 999;
        height: 100%;
        width: 100%;
        top: 0;
        filter: alpha(opacity=60);
        opacity: 0.6;
        -moz-opacity: 0.8;
    }

    .center {
        z-index: 1000;
        margin: 300px 400px 300px 400px;
        padding: 10px;
        width: 130px;
        background-color: White;
        border-radius: 10px;
        filter: alpha(opacity=100);
        opacity: 1;
        -moz-opacity: 1;
    }

        .center img {
            height: 128px;
            width: 128px;
        }
</style>
</head> 
<body>
  <form id="form1" runat="server">
    <h1>My Payment Page</h1>
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
         <ProgressTemplate>
                        <div class="MyModal">
                            <div class="center">
                                <img alt="" src="images/my-loader.gif" />
                            </div>
                        </div>
                    </ProgressTemplate>
    </asp:UpdateProgress>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                            <iframe id="frame1" runat="server" width="100%" height="600" scrolling="no" frameborder="0"></iframe>
            </ContentTemplate>
        </asp:UpdatePanel>

</form> </body> </html>

在我的代码后面的文件中,我以编程方式设置了iframe的源代码

protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            frame1.Src = "http://example.com";
        }
    }

我不知道自己错过了什么。

1 个答案:

答案 0 :(得分:0)

UpdateProgress控件用于部分页面更新(AJAX请求);他们没有回应正常的回发。

要查看它是否有效,请在UpdatePanel (内容模板)中放置一个按钮控件。因为它在更新面板内部,它发出了一个AJAX请求(基本上),所以UpdateProgress控件应该自动运行。

如果响应非常快,您可能看不到UpdateProgress控件的图像。为了测试,请为响应添加一些时间,以便您可以看到图像。

protected void btn_Click(object sender, EventArgs e)
{
    // add a fake delay for testing.
    System.Threading.Thread.Sleep(3000);
}