当我单击向上/向下按钮我重命名两个图像以交换它们时,我面临着一个非常奇怪的图像重命名问题(请参见屏幕截图)。
前两三次它完美地工作,但是当我重复这个过程时,它会停止更改浏览器中的图像。
进一步调查我发现我的代码运行良好,但浏览器正在缓存图像,这就是它们不改变位置的原因。
当我按 cTRL + F5 时,我看到更改的图像,或者如果我移动到任何其他页面并返回同一页面,我再次看到正确的图像顺序,但在同一页面上它不会发生 :(
任何人都可以对此有所了解吗?我该如何解决这个问题?
交换代码:
protected void rptImages_ItemCommand(object source, RepeaterCommandEventArgs e)
{
int id = Convert.ToInt32(Request.QueryString["Id"]);
String path = Server.MapPath(e.CommandArgument.ToString());
if (e.CommandName == "Up")
{
SwapImagesOnUpClick(id, path);
}
if (e.CommandName == "Down")
{
SwapImagesOnDownClick(id, path);
}
}
public void SwapImagesOnUpClick(int id, string path)
{
string oldFileName;
string newFileName;
string tempFileName;
string basicPath = path.Substring(0, path.LastIndexOf('\\'));
oldFileName = path.Substring(path.LastIndexOf('\\') + 1);
tempFileName = "temp.jpg";
//get new filename
string[] fileParts = oldFileName.Split('.');
newFileName = (Convert.ToInt32(fileParts[0]) - 1).ToString();
string newFilePath = basicPath + "\\" + newFileName + ".jpg";
string tempFilePath = basicPath + "\\" + tempFileName;
// set already existing newfilename to temp
File.Move(newFilePath, tempFilePath);
File.Move(path, newFilePath);
File.Move(tempFilePath, path);
}