从.aspx页面在.ascx页面中动态更改图像URL

时间:2012-11-23 07:48:42

标签: asp.net image user-controls

我正在拥有Usercontrol页面(.ascx),其中包含该站点的Header图像。我需要在webform(.aspx)中动态更改Header图像。

我的.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);
   }
}

但是图片没有改变......任何人都可以帮我解决问题..

提前致谢

维杰

1 个答案:

答案 0 :(得分: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";
}