我的母版页包含:
<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但我似乎无法访问该标签。
帮帮我?
答案 0 :(得分:2)
我也有同样的问题。
我所做的是
MasterPage ctl00 = FindControl("ctl00") as MasterPage;
ContentPlaceHolder cplacehld = ctl00.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
Label label1= cplacehld.FindControl("User") as Label;
答案 1 :(得分:0)
尝试:
((Label)this.Page.Master.FindControl("User")).Text = "Welcome, " + u.Name;
((Label)this.Page.Master.FindControl("User")).Visible = true;
答案 2 :(得分:0)
这个问题困扰了我大约两个小时,直到我意识到如果我的页面上有一个asp:Content标签,其中contentplaceholderID设置为母版页中contentplaceholder的ID,我永远无法访问任何控件在contenplacholder。即使内容页面上的asp:Content标记为空,asp:Content页面也始终与MasterPage内容合并。为了提供默认内容,我将标签移到了contentplaceholder标记之外,并将可见性设置为false。如果我然后动态确定我的asp:Content标签没有任何内容,那么我只需将标签可见性设置为true即可显示我的默认内容。不完全优雅,但它有效。