簡體   English   中英

asp.net不會刷新母版頁中新上傳的照片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM