1

我的主页中有这个:

<asp:ContentPlaceHolder ID="BannerPlaceHolder" runat="server">              
 <asp:HyperLink ID="PortalBanner" runat="server" 
                ImageUrl="Images/banner-12-5-11.jpg"   
                NavigateUrl="~/Default.aspx"></asp:HyperLink>
</asp:ContentPlaceHolder>

我希望能够更改超链接ImageUrl,但我得到一个空异常:

你调用的对象是空的。

这是我访问超链接的代码

ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.Master.FindControl("BannerPlaceHolder");
HyperLink hp= (HyperLink)cp.FindControl("PortalBanner");
4

1 回答 1

2

你确定它是在MasterMaster?如果没有,只需将其更改为:

ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.FindControl("BannerPlaceHolder");

另一种方法是在 master 中提供一个属性,您可以通过将其转换为实际类型从页面访问该属性。

在主人的代码隐藏中:

public string PortalBannerImageUrl
{
    get {
        return this.PortalBanner.ImageUrl;
    }
    set {
        this.PortalBanner.ImageUrl = value;
    }
}

在页面中:

var myMaster = this.Master as YourMasterType;
if(myMaster != null)
{
    myMaster.PortalBannerImageUrl = newImageUrl;
}
于 2013-10-08T21:21:01.623 回答