为啥 asp:UpdatePanel 不刷新图像?

Posted

技术标签:

【中文标题】为啥 asp:UpdatePanel 不刷新图像?【英文标题】: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();

为什么图片没有刷新?

【问题讨论】:

【参考方案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 中的某些东西导致了异常,它似乎禁用了进一步的刷新。

以上是关于为啥 asp:UpdatePanel 不刷新图像?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net中点击按钮页面不刷新的效果如何实现~~!求详细!

ASP.NET 用AJAX在页面上传头像,不能异步刷新?

ASP.NET UpdatePanel:在 UpdatePanel 更新上注入 Javascript

ASP.NET DropDown SelectedIndexChanged 未在 Firefox 中使用 UpdatePanel 触发

带有 ASP.NET 复选框触发器的 asp:UpdatePanel

ASP UpdatePanel 内的砌体布局