【问题标题】:Why doesn't asp:UpdatePanel refresh an Image?为什么 asp:UpdatePanel 不刷新图像?
【发布时间】:2011-11-20 06:57:56
【问题描述】:

我有以下 UpdatePanel,它从 ashx 处理程序获取图像,所有这些在刷新页面时都可以正常工作。但是,当计时器触发时,标签会以当前时间刷新,但不会刷新图像。

<asp:UpdatePanel runat="server" id="TimedPanel" UpdateMode="Conditional">
    <ContentTemplate>
         <asp:Image ID="Image1" runat="server"  Height="218px" 
            ImageUrl="~/getImage.ashx?cam=1" Width="303px" BorderWidth="10px" />
        <asp:Timer ID="UpdateTimer" runat="server" interval="1250" 
            ontick="UpdateTimer_Tick" />
        <asp:Label ID="DateStampLabel" runat="server" />
    </ContentTemplate>
   <Triggers>
        <asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
    </Triggers>
</asp:UpdatePanel>

定时器例程是:

protected void UpdateTimer_Tick(object sender, EventArgs e)
{
    DateStampLabel.Text = DateTime.Now.ToString();
}

为什么图片没有刷新?

【问题讨论】:

    标签: c# asp.net image updatepanel refresh


    【解决方案1】:

    一般来说,AJAX 很容易受到浏览器缓存的影响。我通常在 URL 中添加一个DateTime.Now.Ticks。此外,您的 UpdateMode 是有条件的,您必须致电 Update()

    protected void UpdateTimer_Tick(object sender, EventArgs e)
    {
        DateStampLabel.Text = DateTime.Now.ToString();
        Image1.ImageUrl += "&CacheBuster=" + DateTime.Now.Ticks.ToString();
        TimedPanel.Update();
    }
    

    【讨论】:

    • 感谢您的建议...我进行了更改,但仍然没有更新。我修改了您的建议,使 ImageUrl 不会变得非常大: Image1.ImageUrl = "~/getImage.ashx?cam=2&CacheBuster=" + DateTime.Now.Ticks.ToString();... 还有其他建议吗?跨度>
    • 现在似乎可以工作了...... ashx 中的某些东西导致了异常,它似乎禁用了进一步的刷新。
    猜你喜欢
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多