2013-04-12 92 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)中,所以它不會在上傳時更新,但是將在頁面加載完整後更新。

在該行上拋出一個斷點並查看它何時實際被命中。