2013-04-12 58 views
0

我有一个配置文件aspx文件,并有文件上传按钮上传个人资料照片。当你点击文件上传按钮时,它会打开文件选择器窗口。当用户选择文件并关闭文件选择器窗口时,主页面将被提交。照片成功上传。但是当页面再次加载时,我发现主页中的照片在另一次刷新之前不会改变。asp.net不刷新主页上新上传的照片

这里是照片由孩子装载到母版的代码,

 dbCommand = db.GetStoredProcCommand(Select_Users_Photo"); 
     db.AddInParameter(dbCommand, "user_id", DbType.Guid, new Guid(Session["SessionUserId"].ToString().Trim())); 
     IDataReader dr = db.ExecuteReader(dbCommand); 
     if (dr.Read()) 
     { 
      image_user.ImageUrl = dr["PhotoPath"].ToString().Trim(); 
     } 
     else 
      image_user.ImageUrl = "images/man.jpg"; 
     dr.Close(); 
     dr.Dispose(); 

回答

0

在图像URL的末尾追加?mtime=1257316941。如果图像存在于指定的位置。它一定会显示更新的图像。

if (dr.Read()) 
    { 
     image_user.ImageUrl = dr["PhotoPath"].ToString().Trim()+ "?mtime=1257316941"; 
    } 
    else 
     image_user.ImageUrl = "images/man.jpg"+ "?mtime=1257316941"; 
+0

非常感谢你,但它没有工作 –

0

您的上传过程和检索过程可能没有问题。问题将与图像的缓存有关。有几种方法可以解决这个问题。

最简单的方法是在图片标签上添加一个随机查询字符串参数 - 这样浏览器就会认为每次都是不同的图片,并且总是会从服务器请求新的图片。

<img src="/path-to-image/img.png?randomval=<%= Guid.NewGuid() %>"> 

所以从你的代码,这将是:

image_user.ImageUrl = dr["PhotoPath"].ToString().Trim() + "?randomval=" + Guid.NewGuid(); 

有防止缓存的其他方式,但是这可能是最快和最简单的,不会影响您的网页的其余部分。

+0

非常感谢你,但它没有工作 –

0

如果缓存这不是问题,它必须与您的页面生命周期。根据目前的情况不可能判断,但我能想到的唯一的事情就是你的问题代码(设置图片URL)被包装在if (!IsPostback)中,所以它不会在上传时更新,但是将在页面加载完整后更新。

在该行上抛出一个断点并查看它何时实际被命中。