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

Posted

技术标签:

【中文标题】asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件【英文标题】:asp.net how to change a control which is in parent master page, from content page with nested master pages 【发布时间】:2017-08-02 03:27:52 【问题描述】:

我有 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 中控件的属性,包括“文本”和“可见”吗?谢谢!

【问题讨论】:

【参考方案1】:

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

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

你可以访问父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";

【讨论】:

非常感谢。两者都只在内容页面的 Page_Load 中起作用。不适用于按钮的“OnClick”部分。我也会想办法解决的。 (将其标记为答案并再次感谢!)

以上是关于asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET内容页中访问母版页中的对象

asp.net 从内容页面更改母版页部分 css

asp.net 从内容页面更改母版页部分 css

Asp.net 如何取母版页的属性及控件及方法调用求解答

如何在 ASP.net 页面中获取母版页的 Div?

Jquery 不能在使用 ASP.NET C# 的母版页中工作,并且在不使用母版页的情况下工作正常