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 如何从具有嵌套母版页的内容页更改父母版页中的控件的主要内容,如果未能解决你的问题,请参考以下文章