无法访问母版页中内容占位符中的标签
本文关键字:占位符 标签 访问 母版页 | 更新日期: 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 即可显示我的默认内容。 不是很优雅,但它有效。