1

我有用户控件页面 (.ascx),其中包含站点的标题图像。我需要在 webform(.aspx) 中动态更改标题图像。

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

但图像没有改变......谁能帮我找出问题所在..

提前致谢

维杰

4

1 回答 1

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";
}
于 2012-11-23T08:04:55.163 回答