【问题标题】:ASP.NET: Passing data from content page to master page [duplicate]ASP.NET:将数据从内容页传递到母版页[重复]
【发布时间】:2014-01-16 11:12:11
【问题描述】:

我的母版页中有一个名为headerLabel 的标签,我想将其文本设置为内容页的标题。我该怎么做?

【问题讨论】:

标签: asp.net master-pages


【解决方案1】:

在您的母版页上创建一个公共属性 - 类似于:

public string LabelValue
{
  get{ return this.headerLabel.Text;}
  set{ this.headerLabel.Text = value;}
}

然后,在您的子页面上,您可以这样做:

((MyMasterPage)this.Master).LabelValue = "SomeValue";

【讨论】:

  • 您必须提供一个公共属性headerlabel,它会返回此标签。那么这种方法比FindControl approach更好。否则你不能直接访问它,因为控件默认是protected
  • 不错的建议 - 我已经更新,我总是更喜欢访问属性 - 我喜欢在母版页上拥有公共属性而不是公共标签的想法。
  • 如何添加公共属性?我的项目说“MasterPage”不包含“LabelValue”的定义
  • @PhilipLoffler 将第一个代码段添加到您的母版页
  • 我已经这样做了,但我仍然遇到同样的问题
【解决方案2】:

您需要在内容页面上通过它的 id 找到控件,然后像这样设置标签的文本属性

(Label)MasterPage.FindControl("headerLabel").Text="Your Title";

最好在像这样分配文本属性之前检查 null

 Label mylbl= (Label) MasterPage.FindControl("headerLabel");
    if(mylbl!= null)
    {
        mylbl.Text = "Your Title";
    }

【讨论】:

  • 将控件名称硬编码为字符串是不好的!
  • @Amir 我同意这一点,但您必须假设某些东西已设置,否则您将永远无法重定向或编写 javascript!
  • 关注这篇文章。它描述了将数据发送到母版页的所有方式,例如母版页中的 itle、元标记和其他 HTML 标头。 docs.microsoft.com/en-us/aspnet/web-forms/overview/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
相关资源
最近更新 更多