2012-11-23 75 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