我在 UpdatePanal ,OnClick
事件中有 ImageButton ,某些进程在同一张图片上执行。比图像保存在同一位置。
问题是,后面的代码执行成功,但结果没有显示在网页上
ASP代码:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" ChildrenAsTriggers="True" UpdateMode="Always" runat="server">
<ContentTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" AutoPostBack="true" ImageUrl="~/Sel_Img/test.jpg" OnClick="ImageButton1_Click" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ImageButton1" />
</Triggers>
</asp:UpdatePanel>
背后的代码
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
using (Bitmap bitmap = new Bitmap((Server.MapPath(@"/Sel_Img/test.jpg")))
Bitmap bmp = Some_Process(bitmap);
bitmap.Dispose();
bmp.Save(Server.MapPath(@"/Sel_Img/test.jpg"));
ImageButton1.ImageUrl = "../Sel_Img/test.jpg";
}
当我手动重新加载页面时,结果按预期显示,但Onclick
事件未显示结果,I.E 图像中的更改未显示。
答案 0 :(得分:1)
由于图像位于浏览器缓存中,因此未显示更改。要强制刷新,每次修改图像时都可以向URL附加不同的查询字符串:
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
...
ImageButton1.ImageUrl = "~/Sel_Img/test.jpg?" + DateTime.Now.Ticks.ToString();
}