我有一个用户控制页面(.ascx),其中包含网站的标题图像。我需要在网络表单(.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);
}
}
但形象没有改变...谁能帮我找出问题所在。
提前致谢
维杰
您在此处的问题是再次加载控件,并且没有在页面的行中添加它:
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";
}