无法访问母版页中内容占位符中的标签

本文关键字:占位符 标签 访问 母版页 | 更新日期: 2023-09-27 18:34:14

我的母版页包含以下内容:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    <asp:Label ID="User" runat="server" Text="Welcome, " Visible="false"></asp:Label>
</asp:ContentPlaceHolder>

我正在尝试像这样访问标签:

Label welcomeLabel;
ContentPlaceHolder cPlaceHolder;            
cPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if (cPlaceHolder != null)
{
    welcomeLabel = (Label)cPlaceHolder.FindControl("User");
    if (welcomeLabel != null)
    {
        welcomeLabel.Text = "Welcome, " + u.Name;
        welcomeLabel.Visible = true;
    }
 }

我已经检查了是否确实找到了 ContentPlaceHolder1,并且在它上使用 HasControls() 返回 true,但我似乎无法访问标签。

帮帮我?

无法访问母版页中内容占位符中的标签

我也有同样的 prblem。

我所做的是

  MasterPage ctl00 = FindControl("ctl00") as MasterPage;
ContentPlaceHolder cplacehld = ctl00.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
                Label label1= cplacehld.FindControl("User") as Label;

尝试:

((Label)this.Page.Master.FindControl("User")).Text = "Welcome, " + u.Name;   
((Label)this.Page.Master.FindControl("User")).Visible = true;

这个问题困扰了我大约两个小时,直到我意识到如果我的页面上有一个 asp:Content 标记,并将内容占位符 ID 设置为母版页中内容占位符的 ID,我将永远无法访问 contenplacholder 中的任何控件。 asp:Content 页始终与母版页内容合并,即使内容页上的 asp:Content 标记为空也是如此。 为了提供默认内容,我将标签移到了内容占位符标记之外,并将可见性设置为 false。 如果我随后动态确定我的 asp:Content 标记没有任何内容,则只需将标签可见性设置为 true 即可显示我的默认内容。 不是很优雅,但它有效。