I have the following UpdatePanel that gets an image from an ashx handler all of which works fine when the page is refreshed. However, when the timer fires, the label is refreshed with current time, but never the image.
<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>
The timer routine is:
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
DateStampLabel.Text = DateTime.Now.ToString();
}
Why isn't the image refreshed?
AJAX in general is really prone to browser caching. I normally add a DateTime.Now.Ticks to the URL. Also, your UpdateMode is Conditional, you have to call Update():
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
DateStampLabel.Text = DateTime.Now.ToString();
Image1.ImageUrl += "&CacheBuster=" + DateTime.Now.Ticks.ToString();
TimedPanel.Update();
}
来源:https://stackoverflow.com/questions/7472131/why-doesnt-aspupdatepanel-refresh-an-image