7

可以从内容页面访问母版页的元素吗?

假设我有从 MasterPage1 继承的 MasterPage1 和 ContentPage1,而 MasterPage1 有一个按钮:Button1。

我可以从内容页面更改该按钮的属性,例如使 Button1 不可见、不活动等吗?我怎样才能做到这一点?

我正在使用.net2.0

4

5 回答 5

12

是的...如果您需要使用 MasterPage 从 aspx 页面执行此操作,它将是:

Button myButton = (Button)Master.FindControl("myButton");
myButton.Visible = false;
于 2009-01-20T16:07:04.847 回答
9

您必须在页面/用户控件标记中引用 MasterPage。

<%@ Reference VirtualPath="..." %>

然后在代码隐藏中,您只需将 Page.MasterPage 转换为您的 MasterPage 并访问其属性。

MyMasterPage myMasterPage = (MyMasterPage)Page.Master;
于 2009-01-20T16:06:59.777 回答
4

Master.FindControl("myButton").Visible = False

请注意,用于运行上述命令的控件不应位于更新面板内。

于 2009-07-28T11:01:26.677 回答
3

是的,他们可以,并且有一些方法可以解决这个问题。

我使用的方法是在母版页中创建公共方法,这些方法将对母版页中的数据进行修改/访问。例如,我通常喜欢修改我所在的当前页面/类别的链接样式,所以我的母版页中有这样一个方法:

   Public Sub SetNavigationPage(ByVal MenuName As String)

      DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent"

   End Sub

然后在我的内容页面中,我只需像这样访问此方法:

Dim myMaster As EAF = DirectCast(Me.Master, EAF)
myMaster.SetNavigationPage("hypViewEmployee")

...其中 EAF 是我的母版页类的名称。

我发现的一个有趣的问题是,在尝试以这种方式显示/隐藏它们时,我在使用 .NET 控件的 Visibility 属性时遇到了麻烦。这是由于母版页和内容页的呈现顺序。为了解决这个问题,我为可见和隐藏设置了一个基本的 CSS 样式,并相应地设置了 CssClass 属性。

于 2009-01-20T16:07:36.887 回答
0

我遇到了一个问题,除非我在 ContentPlaceHolder 中查找它,否则我无法确定控件。在本例中为标签 (Label.ID = "lblMstrMessage")。我的代码如下(其中 ContentPlaceHolder.ID = "ContentTopPortion")

  Control cph = this.Master.FindControl("ContentTopPortion");
  Label mpLabel = (Label)cph.FindControl("lblMstrMessage");
于 2020-12-23T01:29:39.987 回答