Asp.net 获取内容页中母版页对象的ID

Asp.net 获取内容页中母版页对象的ID,asp.net,master-pages,webforms,content-pages,Asp.net,Master Pages,Webforms,Content Pages,如果母版页有一个id为label1的标签,我如何在内容页中控制该id。id没有传递,因此我无法从本质上控制它。例如,如果我有一个id为contentLabel的控件,我可以通过键入contentLabel来访问它的代码。(无论我在做什么)这里有两个选项: 1:确保您的内容aspx指定: 然后,您可以在内容页的代码隐藏页ala中访问它: Master.ContentLabelText = "hah!"; 或者,2:您可以通过以下方式访问标签: 是否有更好的做法,或者这是唯一的办法?只是好奇谢谢

如果母版页有一个id为label1的标签,我如何在内容页中控制该id。id没有传递,因此我无法从本质上控制它。例如,如果我有一个id为contentLabel的控件,我可以通过键入contentLabel来访问它的代码。(无论我在做什么)

这里有两个选项:

1:确保您的内容aspx指定:

然后,您可以在内容页的代码隐藏页ala中访问它:

Master.ContentLabelText = "hah!";
或者,2:您可以通过以下方式访问标签:


是否有更好的做法,或者这是唯一的办法?只是好奇谢谢,它很好用。我不熟悉.NET。编程一段时间,但从未在.NET或web开发中使用过。@auwall12688以这种方式公开受保护成员的想法对我来说有一种“糟糕的代码味道”。请参见杰夫·阿特伍德对“不雅曝光”的描述:。如果您需要做的只是更改文本,那么我将仅对文本使用getter和setter。i、 公共字符串ContentText{get{return contentLabel.Text;}set{contentLabel.Text=value;}}@antisanity我认为这是一个技术术语-好笑!我也认为MasterType应该自动出现在标记中。我相信他们这样做是因为你可以在代码背后动态地设置母版页,因为他们是“松散耦合”的。创建新页面时选择母版页仅用于设置“默认”母版页。因此,声明MasterType就像说您承诺不分配动态MasterPage(作为回报,您将获得强类型Intellisense)。
public string ContentLabelText
{
    get { return contentLabel.Text; }
    set { contentLabel.Text = value; }
}
Master.ContentLabelText = "hah!";
var contentLabel = Master.FindControl("contentLabel") as Label;