asp.net如何从具有嵌套母版页的内容页面更改父母版页中的控件

时间:2017-03-11 22:03:10

标签: asp.net attributes nested master-pages web-controls

我有两个孩子主人的ParentMaster.master,Child1Master.master,Child2Master.master和几个内容页面。
在父级母版中,我有控件(按钮和标签)驻留在asp:ContentPlaceHolder的外部
我需要在内容页面后面的代码中更改ParentMaster中的按钮和标签的文本(2级)。我还需要更改“可见”字样。这些控件的属性为false或true。

我到目前为止唯一能做的就是改变(从内容页面)1级Master中标签的文本,比如来自AAAA'到' BBBB',像这样:

在Master1.Master中:

<li><asp:label ID="lbl_something" runat="server" Text="AAAA"></asp:label></li>  

在Master1.Master.cs中:

public string str_In_Master
{
    get
    {
        return lbl_something.Text;
    }
    set
    {
        lbl_something.Text = value;
    }
    }

在内容页面中:

protected void Page_Load(object sender, EventArgs e)
{
   this.Master.str_In_Master = "BBBB";
}

但这不适用于嵌套母版页

可以完成吗?我可以更改顶级MasterPage中控件的属性,包括&#39; Text&#39;和&#39;可见&#39;?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以像这样从内容页面访问父母。

        var childMater1 = this.Master;
        var parentMater = childMater1.Master;

你可以访问父母的任何公共财产。

        var childMater1 = this.Master;
        var parentMater = childMater1.Master;
        var typedMaster = parentMater as ParentMaster;
        typedMaster.SomeProperty = "some value";

你可以访问ParentMaster的任何控件。

        var childMater1 = this.Master;
        var parentMater = childMater1.Master;
        var label = parentMater.FindControl("someLabelId") as Label;
        label.Text = "new label value";