无法访问母版页控件

本文关键字:控件 母版页 访问 | 更新日期: 2023-09-27 18:34:24

我的母版页中有这个:

<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");

无法访问母版页控件

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

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

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

在主控代码隐藏中:

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;
}