【发布时间】:2009-07-19 11:14:16
【问题描述】:
我在名为 lblHeading 的母版页 (sample.master) 中有一个标签。
我想在加载内容页面时动态更改标签的文本。
我需要这样做,因为我想将标题更改为有意义的内容,但前提是我知道页面的内容。
这可能吗?
【问题讨论】:
我在名为 lblHeading 的母版页 (sample.master) 中有一个标签。
我想在加载内容页面时动态更改标签的文本。
我需要这样做,因为我想将标题更改为有意义的内容,但前提是我知道页面的内容。
这可能吗?
【问题讨论】:
是的,您可以通过这种非常简单的方式........
((Label)Master.FindControl("lblHeading")).Text = "your new text";
【讨论】:
是的。
您想创建一个strongly-type master page,然后您可以在 Page_Load 期间或其他任何地方从您的内容页面访问它的属性。
【讨论】:
是的,这是可能的。 MasterPage 的行为与您页面中的 UserControl 一样。
实现这一点的可能步骤:
在 MasterPage 上创建一个属性或方法,使您能够对标签进行更改。例如:
public void ChangeLabel(string label) {
lblHeading.Text = label;
}
从您的Page 中,使用Page.Master 属性获取对MasterPage 的引用。
MasterPage的内容。附加信息:您可能需要将Page.Master 转换为MasterPage 类型,请尝试Coding the Wheel's link 以获取有关如何执行此操作的说明。
【讨论】:
按照上面说的做。然后,例如,从您的页面执行此操作(母版页具有 ID="Label_welcome" 的标签):
Label mpLabel = (Label)Page.Master.FindControl("Label_welcome");
if (mpLabel != null)
{
mpLabel.Text = "Welcome Fazio!";
}
【讨论】:
您可以在母版页中创建一个公共属性来更改标签。
public string Heading
{
set
{
lblHeading.text = value;
}
}
【讨论】:
这还取决于您在母版页中的控件的深度。就我而言,我在 ContentPlaceHolder 控件中有一个 Label 控件...所以我必须这样做...
Label myLBL = this.Master.FindControl("HeaderContent").FindControl("myLabel") as Label;
【讨论】: