ASP.NET - 从内容页访问母版页元素

7

内容页面是否可以访问主页面的元素?

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

我能否从内容页更改该按钮的属性,例如将Button1设置为不可见、不活动等?如何实现这一点?

我正在使用.net2.0。

5个回答

12

是的...如果你需要在使用MasterPage的aspx页面中这样做,那么应该是:

Button myButton = (Button)Master.FindControl("myButton");
myButton.Visible = false;

9

您需要在页面/用户控件标记中引用MasterPage。

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

然后在代码后台,你只需要将Page.MasterPage转换为你的MasterPage并访问其属性即可。

MyMasterPage myMasterPage = (MyMasterPage)Page.Master;

4

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

请注意,运行上述命令的控件不应该位于Update Panel中。

注:该命令为it技术相关内容。

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属性。


+1。感谢您提供有关更改CssClass的提示 - 我也觉得它非常方便。不知何故,我忘记在问题被提出的那天留下评论了。 - kristof

0
我遇到了一个问题,除非我在ContentPlaceHolder中寻找它,否则我无法确定控件。 在这种情况下是一个标签(Label.ID = "lblMstrMessage")。以下是我的代码(其中ContentPlaceHolder.ID =“ContentTopPortion”)
  Control cph = this.Master.FindControl("ContentTopPortion");
  Label mpLabel = (Label)cph.FindControl("lblMstrMessage");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接