加载内容页面时,我可以更改母版页中标签的文字吗?

时间:2009-07-19 11:14:16

标签: c# asp.net vb.net

我在母版页(sample.master)中有一个名为lblHeading的标签。

我想在加载内容页面时动态更改标签文本。

我需要这样做,因为我想将标题更改为有意义的内容,但只有在我知道页面内容之后才会这样做。

这可能吗?

6 个答案:

答案 0 :(得分:13)

是的,你可以用这种非常简单的方式........

((Label)Master.FindControl("lblHeading")).Text = "your new text";

答案 1 :(得分:6)

您想创建一个strongly-type master page,然后您可以在Page_Load或其他任何地方从您的内容页面访问它的属性。

答案 2 :(得分:3)

是的,有可能。 MasterPage的行为与您网页中的UserControl相似。

实现此目的的可能步骤:

  1. 在MasterPage上创建一个属性或方法,使您可以对Label进行更改。 E.g:

    public void ChangeLabel(string label) {
      lblHeading.Text = label;
    }
    
  2. Page,使用MasterPage属性获取对Page.Master的引用。

  3. 调用步骤1中定义的方法更改MasterPage内容。
  4. 其他信息:您可能需要将Page.Master投射到MasterPage类型中,请尝试Coding the Wheel's link以获取有关如何执行此操作的说明。

答案 3 :(得分:3)

如上所述。然后,例如,从您的页面执行此操作(母版页具有ID =“Label_welcome”的标签):

private boolean checkData(List<MyObject> list,MyObject1  map){

    if (list.size() == 0){
        return true;
    }

    for (int i = 0 ; i < list.size(); i++){
        MyObject temp = (MyObject)list.get(i);

        if (temp.getAlt().compareTo(map.getType2().getAlt())== 0 && temp.getLat().compareTo(map.getType2().getLat()) == 0 && temp.getLongt().compareTo(map.getType2().getLongt()) == 0 && Integer.valueOf(temp.getPIndex()) == Integer.valueOf(map.getType2().getPIndex())&&  Integer.valueOf(temp.getSIndex()) == Integer.valueOf(map.getType2().getSIndex()) && temp.getID().compareTo(map.getCommonTypeData().getID())== 0 && Integer.valueOf(temp.getFIndex()) == Integer.valueOf(map.getType2().getFIndex())){
            return false;
        }
    }

    return true;
}

答案 4 :(得分:2)

您可以在母版页中创建一个将更改标签的公共属性。

public string Heading
{
    set 
    {
        lblHeading.text = value;
    }

}

答案 5 :(得分:0)

它还取决于Master页面内控件的深度。就我而言,我在ContentPlaceHolder控件中有一个Label控件......所以我不得不这样做......

Label myLBL = this.Master.FindControl("HeaderContent").FindControl("myLabel") as Label;