获取内容页面中的母版页对象的ID

auw*_*688 6 asp.net webforms master-pages content-pages

如果母版页的标签带有id label1,我该如何在内容页面中控制该id.id不会传递下来所以我无法控制它本身.例如,如果我有一个id contentLabel的控件,我可以通过输入contentLabel来访问它代码.(无论我在做什么)

I a*_*ica 10

这有两个选择:

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

<%@ MasterType VirtualPath="~/yourMasterPageName.master" %>
Run Code Online (Sandbox Code Playgroud)

这样做可以让您的内容页面知道您对母版页的期望,并为您提供智能感知.所以,现在你可以继续在主页的代码隐藏中公开标签的Text属性.

public string ContentLabelText
{
    get { return contentLabel.Text; }
    set { contentLabel.Text = value; }
}
Run Code Online (Sandbox Code Playgroud)

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

Master.ContentLabelText = "hah!";
Run Code Online (Sandbox Code Playgroud)

或者,2:您可以通过FindControl()访问标签,如下所示:

var contentLabel = Master.FindControl("contentLabel") as Label;
Run Code Online (Sandbox Code Playgroud)

  • @ auwall12688以这种方式公开受保护成员的想法给我带来了"糟糕的代码味道".请参阅Jeff Atwood对"不雅曝光"的描述:http://www.codinghorror.com/blog/2006/05/code-smells.html.如果您需要做的只是更改文本,那么我只在文本上使用getter和setter.即公共字符串ContentText {get {return contentLabel.Text;} set {contentLabel.Text = value;}} (5认同)