C#中的缓存问题重命名文件

时间:2013-07-30 17:00:28

标签: c# asp.net file-handling

我正面临着一个非常奇怪的重命名图像问题(请参见截图) 当我单击向上/向下按钮时,我重命名两个图像以交换它们。 enter image description here

前两次三次完美运行,但是当我重复此过程时,它会停止在浏览器中更改图像。

进一步调查我发现我的代码工作正常,但浏览缓存图像,这就是他们不改变位置的原因。

当我按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);






         }

2 个答案:

答案 0 :(得分:0)

我建议您在生成的页面内更改image1到位置image2的位置,而不是重命名文件

答案 1 :(得分:0)

如果有人不得不面对类似我刚刚追加的情况:“?时间戳” 在图像src中,这样你的图像就不会被缓存,所有东西都可以完美地运行,以使用ajax实现上下图像功能。