我有一个ASP.NET网络应用程序。我的尝试应该很简单:显示图像后,我有一个旋转按钮,允许用户将图像旋转90度。这是按钮点击代码...
Dim i As Image
i = Image.FromFile("C:\Inetpub\wwwroot\myWebApp\MyImage.jpg")
'rotate the picture by 90 degrees
i.RotateFlip(RotateFlipType.Rotate90FlipNone)
're-save the picture as a Jpeg
i.Save("C:\Inetpub\wwwroot\myWebApp\MyImage.jpg",System.Drawing.Imaging.ImageFormat.Jpeg)
'tidy up after we've finished
i.Dispose()
此处使用的图像和按钮非常引人注目。当我创建一个只有1页的示例应用程序时,这非常有效。然而,当我进入我的主应用程序时,即使它在一个新的页面中,所有它本身没有其他任何东西,甚至不是一个母版页,它实际上旋转图像并将其写回文件系统,但它不显示旋转的文件。它显示了图像。直到我击中F5,然后,无论我按下按钮多少次,它都能完美运行。我已经尝试了一些我可以想到的东西,以清除无法获得的效果。
答案 0 :(得分:1)
您是使用更新面板还是其他机制重新请求图像?您可以通过在IMG src或ASP:Image源中添加类似时间戳或类似GET参数的内容来强制刷新。
答案 1 :(得分:0)
不是将图像保存回网络根目录,而是将原始图像保持原样,然后将旋转后的图像流式传输到客户端。
<img src="RotateImage.aspx?Image=MyImage.jpg&Rotate=90" />
然后在你的RoateImage.aspx中执行相同的加载/旋转工作并且:
i.Save(Response.OutputStream, ImageFormat.Jpeg)
Response.ContentType = "image/jpeg"
答案 2 :(得分:0)
图像是从缓存中提供的,这就是未显示更新的原因。显示相同图像的较新版本。您可以将查询字符串附加到图像的路径。例如,
<img src='/images/image.jpg?<%= DateTime.Now.Ticks %>' />