[英]asp.net doesnt refresh the newly uploaded photo in master page
我有一個個人資料aspx文件,並且有fileupload按鈕可以上傳個人資料照片。 單擊文件上傳按鈕時,它將打開文件選擇器窗口。 當用戶選擇文件並關閉該文件選擇器窗口時,將提交主頁。 照片成功上傳。 但是,當頁面再次加載時,我看到母版頁中的照片在再次刷新之前沒有改變。
這是將照片從子級加載到母版頁的代碼,
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();
在圖像網址末尾附加?mtime=1257316941
。 如果圖像位於指定位置。 它肯定會顯示更新的圖像。
if (dr.Read())
{
image_user.ImageUrl = dr["PhotoPath"].ToString().Trim()+ "?mtime=1257316941";
}
else
image_user.ImageUrl = "images/man.jpg"+ "?mtime=1257316941";
您的上傳過程和檢索過程可能很好。 問題將與圖像的緩存有關。 有幾種處理方法。
最簡單的方法是在image標簽上添加一個隨機的querystring參數-這樣,瀏覽器每次都會認為它是不同的圖片,並且始終會向服務器請求新的圖片。
<img src="/path-to-image/img.png?randomval=<%= Guid.NewGuid() %>">
因此,從您的代碼來看,它將是:
image_user.ImageUrl = dr["PhotoPath"].ToString().Trim() + "?randomval=" + Guid.NewGuid();
還有其他防止緩存的方法,但這可能是最快和最簡單的方法,而不會破壞頁面的其余部分。
如果這不是問題,那一定與頁面生命周期有關。 無法根據目前的情況來判斷,但我唯一能想到的是問題中的代碼(用於設置圖像網址)包裝在if (!IsPostback)
,因此不會進行更新上傳后,但將在頁面的完整GET
加載后更新。
在該行上拋出一個斷點,看看它何時真正被命中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.