2012-11-23 105 views
1

我有Usercontrol頁面(.ascx),它具有網站的頁眉圖像。我需要在webform(.aspx)中動態更改標題圖像。從.aspx頁面動態更改.ascx頁面

我的.aspx代碼:

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    Control hdrCtl = null; 
    try 
    {        
     hdrCtl = LoadControl("~/UI/Header.ascx"); 
     if (hdrCtl != null) 
     {  
      Image src = (Image)hdrCtl.FindControl("imgHeader");          
      src.ImageUrl = "~/Content/assets/images/editorial_1.jpg"; 
     } 
    } 
    catch (Exception ex) 
    { 
     Trace.Write(ex.Message); 
    } 
} 

但圖像沒有改變......誰能幫我找出這個問題..

在此先感謝

維傑

+0

把一個斷點放在你改變圖像的線上,看它是否已經到達? – Kaf

+0

嗨卡夫我做到了。它在調試時顯示更新的ImagePath,但不顯示在網頁中..我檢查了圖像路徑都很好,但不知道爲什麼更新的圖像沒有顯示... – VijayMathew

回答

0

這裏你的問題是,你再次加載你的控件並且在頁面中添加了一行:

hdrCtl = LoadControl("~/UI/Header.ascx"); 

爲了使代碼正常工作,它缺少Page.Controls.Add(hdrCtl),但我不認爲這是您製作代碼的方式。

我知道您的控件已經存在於您的頁面中,因此這不是更改圖片的方式。
要改變,你都準備好你的頁面上添加上你的自定義控件的圖像,你有你的自定義控制,內部創建一個參數圖片:

public string cHeaderImage 
{ 
    set { imgHeader.ImageUrl = value; } 
} 

,然後你簡單做

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    // this is the id of your custom control 
    headerCntrID.cHeaderImage = "~/Content/assets/images/editorial_1.jpg"; 
} 
+0

嗨Aristos它不是工作我已經完成了一個屬性,正如你在調試時所解釋的那樣,它顯示了更新的Imagepath,但它沒有顯示圖像,並且在螢火蟲中imageurl屬性沒有更新... – VijayMathew

+0

@VijayMathew也許它需要將它移動到PageLoad或PageInit。您還可以對其進行調試,以查看在頁面循環結束時圖像是否已更改,並且不會將其更改爲代碼中的其他位置。有點這個想法,它會起作用。 – Aristos